Установка типа MIME для документа Excel


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 - любой тип документа). При этом, как мы можем сохранить имя файла, если пользователь решит сохранить файл - в настоящее время имя сервлета, который отображает файл, отображается как имя по умолчанию.


4
В более общем смысле , лучший способ узнать, что думают сами MS правильный тип , чтобы найти коробку с последней установленной версии и посмотреть на HKCR/.xls«S Content Typeзначение в реестре.
Rup

3
"application / vnd.ms-office" - это другой тип пантомимы для файлов XLS.
herrjeh42

application/vnd-xlsтакже работает для .xlsфайлов.
mbomb007

Пожалуйста, обратитесь к этому сообщению для получения полного списка типов MIME и соответствующих расширений файлов Excel.
RBT

Ответы:


344

Я считаю, что стандартный тип MIME для файлов Excelapplication/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/…
прошивка

2
Вы должны избегать использования Content-Disposition в HTTP, это имеет соображения безопасности. Content-Disposition предназначен только для электронной почты. См. Stackoverflow.com/questions/1012437 для получения дополнительной информации.
Дмитрий Лазерка

Обратите внимание, что для формата файла OpenXML Excel XLSX определен другой тип Mime, см. Полный список по предоставленной ссылке.
Оскар Берггрен

@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. Было бы неплохо включить его при проверке типов пантомимы!


1
Это было то, что я искал, спасибо, нужно было поддерживать как последний формат, так и предыдущий.
Ли

42

Вы всегда должны использовать ниже MIME-тип, если вы хотите использовать файл Excel в формате xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 

13

Для .xls используйте следующий тип контента

application/vnd.ms-excel

Для Excel 2007 версии и выше .xlsx формат файлов

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

8

Я устанавливал MIME-тип из кода .NET, как показано ниже -

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

Мое приложение генерирует Excel с использованием OpenXML SDK. Этот тип MIME работал -

vnd.openxmlformats-officedocument.spreadsheetml.sheet

2

Я использую EPPlus для создания файла Excel .xlsx (на основе формата OpenXML). Для отправки этого файла 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, как правило, также генерируют MIME-тип «text / xls» для файлов XLS Excel, надеюсь, это поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.