3

我有一个与此问题密切相关的问题Microsoft Excel 错误:“将命令发送到程序时出现问题。” 从而打开 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 类型?

4

1 回答 1

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")
于 2011-07-03T17:38:55.427 回答