MVC3返回文件操作导致间歇性的Excel程序错误

时间:2011-06-15 11:03:28

标签: excel file asp.net-mvc-3 memorystream npoi

我遇到一个与此问题密切相关的问题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 来生成一堆数据,会生成一个Excel文件,而不是文件已存在,正在打开或缩写。 (使用NPOI),将其写入MemoryStream,然后使用内置的return File(etc) ActionResult将其删除到浏览器,其中包含类似的内容(但在此处缩短以帮助提高可读性):

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

第一次单击触发此操作并返回此文件的链接时,会出现错误。如果按下确定并再次尝试它就能正常工作,并将继续工作......永远

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

有关如何绕过它的任何建议?也许我有错误的mime-type?

1 个答案:

答案 0 :(得分: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")