导出Excel .xls和.xlsx文件EPPlus .NET

4

我有一段代码,当我将输出文件的扩展名设置为'.xlsx'时,它可以完美地工作。但是当我将其更改为'.xls'时,在MS Excel中打开文件之前出现窗口,显示文件不正确(文件格式不正确),然后会出现很多糟糕的编码字符(如日语等)。

有人遇到过这个问题吗?有解决方法吗?

    _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
那是因为据我所知,EPPlus只能导出XLSX(Excel 2007及以上版本的OpenXML格式)...而XLS是旧的二进制Excel格式,因此Excel会正确显示某些格式有误...
编辑 - 关于可能的MIME类型,请尝试以下内容:
application/vnd.ms-excel
application/x-msexcel
application/ms-excel
application/msexcel
application/x-excel
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

稍等片刻- 当我在本地机器上将其导出为xls格式时,一切都正常。当我尝试在远程服务器上执行此操作时,我只能正确地导出为xlsx扩展名。 - FSou1

0

它提示文件扩展名不正确,但是尽管 .xls 是正确的扩展名,请放心点击“是”。 您的文件会顺利打开而没有数据损坏。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接