Экспорт Excel .xls и .xlsx EPPlus .NET - PullRequest
4 голосов
/ 19 ноября 2011

У меня есть код, который отлично работает, когда я устанавливаю расширение выходного файла, например «.xlsx», но когда я изменяю его на «.xls», у меня появляется окно перед открытием файла в MSExcel, этот файл не корректен (неправильный формат файла), а также множество плохих символов (например, японский и т. д.).

У кого-нибудь возникла эта проблема?Есть ли решение?

    _currentContext.Response.Clear();
    _currentContext.Response.ClearContent();
    _currentContext.Response.ClearHeaders();
    _currentContext.Response.AddHeader("content-disposition", "attachment; filename=FileName.xlsx");
    _currentContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
    _currentContext.Response.ContentType = "application/ms-excel";
    _currentContext.Response.AddHeader("Content-Transfer-Encoding", "binary");
    _currentContext.Response.BinaryWrite(_package.GetAsByteArray());
    _currentContext.Response.Flush();
    _currentContext.Response.End();

Один момент - когда я экспортирую его в xls на моей локальной машине, все работает отлично.Когда я пробую это на удаленном сервере, я могу правильно экспортировать только в расширение xlsx.

Ответы [ 2 ]

4 голосов
/ 19 ноября 2011

Это происходит потому, что AFAIK EPPlus может экспортировать только XLSX (OpenXML-формат Excel 2007 и выше) ... в то время как XLS является старым двоичным Excel-Formt, поэтому Excel правильно говорит, что с форматом что-то не так ...

РЕДАКТИРОВАТЬ - для возможных типов MIME попробуйте следующее:

application/vnd.ms-excel
application/x-msexcel
application/ms-excel
application/msexcel
application/x-excel
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
0 голосов
/ 01 августа 2012

подсказывает Неверное расширение файла.но, хотя .xls - правильное расширение, не беспокойтесь, нажмите YES.Ваш файл открывается без проблем. Повреждения.

//Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.ContentType = "application/x-msexcel";
...