Установка типа MIME для документа Excel - PullRequest
333 голосов
/ 10 июня 2009

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

Ответы [ 7 ]

323 голосов
/ 26 декабря 2009

Я считаю, что стандартный MIME-тип для файлов Excel - application/vnd.ms-excel.

Что касается названия документа, вы должны установить следующий заголовок в ответе:

header('Content-Disposition: attachment; filename="name_of_excel_file.xls"');
152 голосов
/ 20 апреля 2012

Я вижу, что здесь пробуждается старая тема, но я чувствовал желание добавить "новый" формат .xlsx.

Согласно http://filext.com/file-extension/XLSX расширение для .xlsx равно application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. Было бы неплохо включить его при проверке типов пантомимы!

37 голосов
/ 26 июля 2012

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

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 
6 голосов
/ 21 июня 2016

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

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

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

vnd.openxmlformats-officedocument.spreadsheetml.sheet
2 голосов
/ 06 апреля 2019

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

application/vnd.ms-excel

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

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
1 голос
/ 01 ноября 2018

Я использую 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 голосов
/ 25 мая 2016

Для тех, кто все еще сталкивается с этим после использования всех возможных типов MIME, перечисленных в вопросе:

Я обнаружил, что iMac, как правило, также генерируют MIME-тип "text / xls" для файлов XLS Excel, надеюсь, это поможет.

...