У меня есть странная проблема, использующая EPPlus для создания некоторых файлов .XLSX. У меня есть созданный пакет, а затем выводятся в ответ.
Я создал пакет следующим образом:
var file = new FileInfo(@"C:\Test.xlsx");
ExcelPackage package = new ExcelPackage(file);
//...code to output data...//
package.Save();
Это сохраняет файл на моем локальном диске C: правильно, и когда я его открываю, он отлично работает. Нет ошибок или чего-либо, правильное форматирование и т.д.
Однако теперь я хочу вывести этот файл в поток ответов, поэтому я изменил код, который должен был выглядеть следующим образом:
ExcelPackage package = new ExcelPackage();
//...code to output data...//
MemoryStream result = new MemoryStream();
package.SaveAs(result);
context.Response.Clear();
context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
context.Response.AddHeader("Content-Disposition", "attachment;filename=MissionDetails.xlsx");
result.WriteTo(context.Response.OutputStream);
context.Response.End();
НО, когда я запускаю этот код, я получаю следующее приглашение при попытке открыть файл Excel:
Excel нашел нечитаемый контент в filename.xlsx. Вы хотите восстановить содержание этой книги? Если вы доверяете источнику этой книги, нажмите "Да"
Нажмите "Да", затем отобразится следующее приглашение:
Этот файл нельзя открыть с помощью Microsoft Excel. Вы хотите найти веб-сайт Microsoft Office Online для конвертера, который может открыть файл?
Я выбираю No
здесь, а затем открывает файл Excel и отображает эту ошибку:
Excel завершил проверку и восстановление уровня файла. Некоторые части этой книги, возможно, были отремонтированы или отброшены.
НО файл затем загружается нормально и, кажется, отформатирован правильно и все. Но каждый раз, когда я пытаюсь открыть файл, он дает те же подсказки и сообщение об ошибке.
Примечание. Код для вывода данных не изменяется для любого из этих сценариев.
Кто-нибудь видел что-нибудь подобное? Или у вас есть идея, что может привести к неправильному сохранению файла только при выводе ответа?