MS Excel有以下观察到的MIME类型:

应用程序/盾。ms excel(官方) 应用程序/ msexcel 应用程序/ x-msexcel 应用程序/ x-ms-excel 应用程序/ x-excel 应用程序/ x-dos_ms_excel 应用程序/ xls 应用程序/ x-xls 应用程序/ vnd.openxmlformats-officedocument.spreadsheetml。表(xlsx)

是否有一种类型适用于所有版本?如果不是,我们是否需要设置response.setContentType()与每一个这些mime类型单独?

此外,我们在应用程序中使用文件流来显示文档(不仅仅是excel—任何类型的文档)。在这样做时,如果用户选择保存文件,我们如何保留文件名——目前,呈现文件的servlet的名称显示为默认名称。


当前回答

对于.xls,使用以下内容类型

application/vnd.ms-excel

适用于Excel 2007及以上版本。xlsx文件格式

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

其他回答

在这里我看到了一个旧线程,但我觉得有必要添加“新”.xlsx格式。

根据http://filext.com/file-extension/XLSX, .xlsx的扩展名是application/vnd.openxmlformats-officedocument.spreadsheetml.sheet。在检查mime类型时包含它可能是一个好主意!

我设置MIME类型从。net代码如下-

File(generatedFileName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

我的应用程序使用OpenXML SDK生成excel。这个MIME类型工作-

vnd.openxmlformats-officedocument.spreadsheetml.sheet

对于任何在使用问题中列出的所有可能的MIME类型后仍然跌跌撞撞的人:

我发现iMacs也倾向于为xls Excel文件抛出一个“text/xls”的MIME类型,希望这有帮助。

我相信Excel文件的标准MIME类型是application/vnd.ms-excel。

关于文档的名称,您应该在响应中设置以下头:

header('Content-Disposition: attachment; filename="name_of_excel_file.xls"');

我使用EPPlus生成。xlsx(基于OpenXML格式)excel文件。为了在电子邮件中作为附件发送这个excel文件,我使用以下MIME类型,它与EPPlus生成的文件工作良好,并在ms-outlook邮件客户端预览中正常打开。

string mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
System.Net.Mime.ContentType contentType = null;
if (mimeType?.Length > 0)
{
    contentType = new System.Net.Mime.ContentType(mimeType);
}