2011-06-15 70 views
3

我有一个问题与此问题密切相关Microsoft Excel Error: "There was a problem sending the command to the program."由此打开Excel给出There was an error sending a command to the program错误。MVC3 return文件操作导致间歇性Excel程序错误

但是,而不是文件的现有和被打开或shortcutted到,我使用MVC3与产生一串数据的动作,生成Excel文件(使用NPOI),将其写入到的MemoryStream,然后卡盘,为浏览器中使用内置return File(etc)的ActionResult,用一些类似于(但这里简称为提高可读性),以这样的:

return File(myMemoryStream, "application/vnd.ms-excel", "filename.xls"); 

的第一次点击的时候触发这个动作并返回链接这个文件 - 它出现了错误。如果按OK键,再它的作品尝试,并会继续努力......永远

现在我知道这是可能是与禁用DDE /插件或东西在Excel中 - 但因为我生成一个excel工作簿并将其转储到内存流而不是打开永久存在于文件系统上的东西,我不确定我有哪些选项可以删除该问题。

有关如何避开它的任何建议?也许我有错误的mime类型?

+0

我也有这个问题......任何解决方案? – BlueChippy 2011-06-27 09:08:14

+0

对于信息:我已经切换到EPPlus创建Excel文件...它工作得很好,虽然看起来有点慢。然而,有一件事是尝试将Stream位置重新设置为0. – BlueChippy 2011-06-28 09:14:06

+0

我正在将流位置重置为0,但不确定在这种情况下它是否真的有很大的不同。发现它只在具有“新”(2007+)版本的Excel的特定机器上。非常有可能只有97-2003格式才能完全支持NPOI。 – SpaceBison 2011-06-28 09:46:12

回答

1

Content-Type application/vnd.ms-excel正在向浏览器发送命令以在浏览器中打开该文件。这可能是问题的原因。尝试将内容类型设置为application/x-msexcel。

在您的示例中,浏览器将尝试在浏览器中打开Excel电子表格(如果用户安装了Excel)。

return File(myMemoryStream, "application/vnd.ms-excel", "filename.xls") 

请进行以下更改

return File(myMemoryStream, "application/x-ms-excel", "filename.xls") 
+0

感谢这个替代方案 - 我会尝试一下。 – SpaceBison 2011-07-04 06:25:45

+0

我接受这个答案作为最可能的解决方法,在没有任何其他答案的情况下:) – SpaceBison 2011-09-01 14:44:25

相关问题