问题描述
|
我有一个与此问题密切相关的问题Microsoft Excel错误:“将命令发送到程序时出现问题。”从而打开Excel会显示“ 0”错误。
但是,我使用的是MVC3,而不是现有的文件,正在打开或被快捷方式打开的文件,该操作会生成一堆数据,生成一个excel文件(使用NPOI),将其写入MemoryStream,然后将其插入浏览器使用内置的“ 1” ActionResult,与此类似(但在此处进行了缩短以提高可读性):
return File(myMemoryStream,\"application/vnd.ms-excel\",\"filename.xls\");
首次单击该链接会触发此操作并返回此文件-它带有错误。如果您按确定,然后再试一次,它将起作用,并且将继续起作用...永远
现在,我知道这可能与禁用DDE /插件或Excel中的某些功能有关-但由于我正在生成excel工作簿并将其转储到内存流中,而不是打开文件系统中永久存在的内容,我不确定必须删除哪些选项。
关于如何解决它的任何建议?也许我输入了错误的mime类型?
解决方法
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\")