Действието за връщане на MVC3 файл причинява периодична програмна грешка на Excel

Имам проблем, който е тясно свързан с този проблем Грешка на 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");

Първият път, когато щракнете върху връзката, която задейства това действие и връща този файл, се появява грешката. ако натиснете OK и опитате отново, работи и ще продължи да работи... завинаги

Сега знам, че това е потенциално нещо общо с деактивирането на DDE/плъгини или нещо подобно в Excel - но тъй като генерирам работна книга на Excel и я изхвърлям в поток от памет, вместо да отварям нещо, което съществува постоянно във файловата система, не съм сигурен какви опции имам, за да премахна проблема.

Някакви предложения как да го заобиколите? Може би имам грешен мим тип?


person SpaceBison    schedule 15.06.2011    source източник
comment
И аз имам този проблем... някакви решения?   -  person BlueChippy    schedule 27.06.2011
comment
За информация: Преминах на EPPlus за създаване на Excel файл...работи много добре, въпреки че изглежда малко по-бавно. Въпреки това, едно нещо, което трябва да опитате, е да зададете отново позицията на потока на 0.   -  person BlueChippy    schedule 28.06.2011
comment
Възстановявам позицията на потока на 0 по силата на навика - не съм сигурен в този случай дали всъщност има голяма разлика. Открих, че е само на определени машини с нови (2007+) версии на Excel. Може да се окаже, че NPOI се поддържа напълно само с формат 97-2003.   -  person SpaceBison    schedule 28.06.2011
comment
Имам същия проблем. Изглежда, че това е свързано с Excel, защото се случва, когато изтеглям електронни таблици от други сайтове (не непременно базирани на ASP .NET).   -  person Azargoth    schedule 30.06.2011


Отговори (1)


Приложението Content-Type/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")
person Amit Bagga    schedule 03.07.2011
comment
Благодаря за тази алтернатива - ще я пробвам. - person SpaceBison; 04.07.2011
comment
Приех този отговор като най-вероятното решение, при липса на други отговори :) - person SpaceBison; 01.09.2011