2011-06-15 45 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

相關問題