Я работаю над некоторым кодом, который генерирует электронную таблицу Excel, а затем загружает ее пользователю. Я использую ExcelPackage для создания файла.
Генерация работает нормально. Я могу открыть сгенерированные файлы с помощью Excel 2007 без проблем. Но, у меня возникли проблемы с загрузкой файла с помощью Response.TransmitFile()
.
Сейчас у меня есть следующий код:
//Generate the file using ExcelPackage
string fileName = generateExcelFile(dataList, "MyReportData");
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
Response.ContentType = "application/vnd.xls"
Response.Charset = "";
Response.TransmitFile(fileName);
Когда Excel 2007 открывает файл, загруженный, как указано выше, он дает предупреждение "формат файла не соответствует расширению". После нажатия на предупреждение, Excel отображает содержимое XML файла с исходным текстом.
Если я изменил расширение файла, например
Response.AddHeader("content-disposition", "attachment;filename=FileName.xlsx");
В Excel 2007 появляется сообщение "Неиспользуемый контент в файле" в Excel, за которым следует диалог, который предлагает найти конвертер в Интернете. Если я нажму "нет" в этом диалоговом окне, Excel сможет загрузить данные.
Я также экспериментировал с разными типами MIME, такими как application/vnd.ms-excel
и application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
, в сочетании с расширениями файлов .xls и .xlsx. Все комбинации приводят к одному из двух вариантов поведения, упомянутых выше.
Какова правильная комбинация расширения файла и типа MIME для использования в этом сценарии? Что еще может вызвать этот отказ, кроме неправильного типа или расширения MIME?
FYI, это происходит с помощью встроенного веб-сервера разработки Visual Studio. Я еще не пробовал это с IIS.