MVC3 return File action вызывает периодическую ошибку программы Excel - PullRequest
3 голосов
/ 15 июня 2011

У меня есть проблема, которая тесно связана с этой проблемой Ошибка 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 и выгружаю ее в поток памяти, а не открываю что-то который постоянно существует в файловой системе, Я не уверен , какие варианты у меня есть, чтобы удалить проблему.

Любые предложения о том, как обойти это? Возможно, у меня неправильный тип пантомимы?

1 Ответ

1 голос
/ 03 июля 2011

Приложение 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")
...