4

我有一个代码,当我将输出文件的扩展设置为“.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 扩展。

4

2 回答 2

4

发生这种情况是因为 AFAIK EPPlus 只能导出 XLSX(OpenXML-Format 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
于 2011-11-19T10:30:12.803 回答
0

它提示文件扩展名不正确。但是虽然 .xls 是正确的扩展名,但不要担心单击是。您的文件顺利打开,没有数据损坏。

//Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.ContentType = "application/x-msexcel";
于 2012-08-01T07:40:45.137 回答