为Excel文档设置MIME类型


361

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

  • application/vnd.ms-excel (官方)
  • application/msexcel
  • application/x-msexcel
  • application/x-ms-excel
  • application/x-excel
  • application/x-dos_ms_excel
  • application/xls
  • application/x-xls
  • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (xlsx)

是否有一种适用于所有版本的类型?如果没有,我们是否需要分别设置response.setContentType()这些哑剧类型中的每一种?

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


4
更一般而言,找出MS自己认为正确类型的最佳方法是找到一个装有最新版本的框,然后在注册表中查看HKCR/.xlsContent Type值。
拉普

3
“ application / vnd.ms-office”是XLS文件的另一种mime类型。
herrjeh42 2014年

application/vnd-xls也适用于.xls文件。
mbomb007 '16

请参阅帖子以获取MIME类型和相关excel文件扩展名的完整列表。
RBT

Answers:


344

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

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

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

16
application / msexcel和application / vnd.ms-excel有什么区别?
塔比索·莫福肯

6
如果要在浏览器中显示文档(如果支持),则Content-Disposition必须为“内联”。参见stackoverflow.com/questions/1395151/…–
Flash

2
您应该避免在HTTP中使用Content-Disposition,因为它具有安全性考虑。内容处置仅适用于电子邮件。有关更多信息,请参见stackoverflow.com/questions/1012437
Dzmitry Lazerka

请注意,对于OpenXML Excel XLSX文件格式,定义了其他Mime类型,请参见提供的链接中的完整列表。
Oskar Berggren,2015年

@DzmitryLazerka是内容处置的“安全”替代方法是什么?在您的链接之后,然后是该答案中的链接,然后是该文档中的链接,将我们带到此处:tools.ietf.org/html/rfc6266#section-4.3。据我所知,安全问题仅涉及用户提供的文件名-如果它们包含非拉丁字符或某些操作系统上无效的字符。所有主要的浏览器都有针对这些问题的防护措施。Windows和Mac还在文件上设置一个标志,指示该文件来自互联网,当您尝试打开该文件时会弹出警告。
基普

170

我看到这里唤醒了一个旧线程,但我感到有增加“新” .xlsx格式的冲动。

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


1
这就是我一直在寻找的感谢,需要支持最新的格式以及以前的格式。


13

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

application/vnd.ms-excel

对于Excel 2007版本及以上.xlsx文件格式

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

8

我从.NET代码设置MIME类型,如下所示-

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

我的应用程序使用OpenXML SDK生成excel。此MIME类型有效-

vnd.openxmlformats-officedocument.spreadsheetml.sheet

2

我正在使用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);
}

0

对于在使用问题中列出的所有可能的MIME类型后仍不满意的人:

我发现iMac还会为XLS Excel文件抛出MIME类型的“文本/ xls”,希望这对您有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.