我遇到一个与此问题密切相关的问题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?
答案 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")