Setting mime type for excel document
Asked Answered
C

6

439

MS Excel has the following observed MIME types:

  • application/vnd.ms-excel (official)
  • 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)

Is there any one type that would work for all versions? If not, do we need to set response.setContentType() with each one of these mime types individually?

Also, we use file streaming in our application to display document (not just excel - any type of document). In doing so, how can we retain the filename if the user opts to save the file - currently, the name of the servlet that renders the file appears as the default name.

Counterbalance answered 10/6, 2009 at 7:7 Comment(5)
More generally, the best way to find out what MS themselves think is the correct type is to find a box with the latest version installed and look at HKCR/.xls 's Content Type value in the registry.Iridize
"application/vnd.ms-office" is another mime type for XLS files.Shirelyshirey
application/vnd-xls also works for .xls files.Britannic
Please refer to this post for complete list of MIME types and related excel file extensions.Thibodeau
The standard excel MIME type is:- application/vnd.ms-excelOversize
O
405

I believe the standard MIME type for Excel files is application/vnd.ms-excel.

Regarding the name of the document, you should set the following header in the response:

header('Content-Disposition: attachment; filename="name_of_excel_file.xls"');
Ofeliaofella answered 26/12, 2009 at 19:44 Comment(7)
what is the difference between application/msexcel and application/vnd.ms-excel?Phung
If you're wanting to display the document within the browser (if supported) then Content-Disposition needs to be 'inline'. See #1395651Edric
You should avoid using Content-Disposition in HTTP, it has security considerations. Content-Disposition is only for email. See stackoverflow.com/questions/1012437 for more info.Cymose
Note that for OpenXML Excel XLSX file format a different Mime type is defined, see the full list at the link provided.Hickie
@DzmitryLazerka what is the "secure" alternative to content-disposition? Following your link, then the link in that answer, then the link in that document, gets us to here: tools.ietf.org/html/rfc6266#section-4.3. As far as I can tell, the security concern is just involving filenames provided by users--if they contain non-latin characters, or characters that are invalid on some OS. All the major browsers have safeguards against these concerns. Windows and Mac also set a flag on a file indicating that it came from the internet, popping up a warning when you try to open it.Herbartian
@Herbartian Not only bad characters, but also Javascript, there was a link in that question comments on content-disposition hacking.Cymose
Secure alternative is to make URL to download that ends on desired filename, I believe.Cymose
C
224

Waking up an old thread here I see, but I felt the urge to add the "new" .xlsx format.

According to http://filext.com/file-extension/XLSX the extension for .xlsx is application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. It might be a good idea to include it when checking for mime types!

Cussedness answered 20/4, 2012 at 12:39 Comment(1)
This was what I was looking for thanks, needed to support the latest format as well as the previous.Ilsa
P
69

For .xls use the following content-type

application/vnd.ms-excel

For Excel 2007 version and above .xlsx files format

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Percept answered 6/4, 2019 at 7:21 Comment(0)
N
9

I was setting MIME type from .NET code as below -

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

My application generates excel using OpenXML SDK. This MIME type worked -

vnd.openxmlformats-officedocument.spreadsheetml.sheet
Nobleminded answered 21/6, 2016 at 17:1 Comment(0)
H
2

I am using EPPlus to generate .xlsx (OpenXML format based) excel file. For sending this excel file as attachment in email I use the following MIME type and it works fine with EPPlus generated file and opens properly in ms-outlook mail client preview.

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);
}
Haydeehayden answered 1/11, 2018 at 11:25 Comment(0)
H
1

For anyone who is still stumbling with this after using all of the possible MIME types listed in the question:

I have found that iMacs tend to also throw a MIME type of "text/xls" for XLS Excel files, hope this helps.

Headrest answered 25/5, 2016 at 18:58 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.