Встановлення типу 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" - це ще один тип mime для файлів XLS.
herrjeh42

application/vnd-xlsтакож працює для .xlsфайлів.
mbomb007

Перейдіть до цієї публікації для повного переліку типів MIME та пов'язаних з ними розширень файлу Excel.
RBT

Відповіді:


344

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

Що стосується назви документа, то у відповіді слід встановити таке заголовок:

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

16
яка різниця між application / msexcel та application / vnd.ms-excel?
Табісо Мофокенг

6
Якщо ви хочете відобразити документ у веб-переглядачі (якщо він підтримується), вміст-диспозиція повинен бути "вбудованим". Дивіться stackoverflow.com/questions/1395151/…
спалах

2
Вам слід уникати використання вмісту-диспозиції в HTTP, це має міркування безпеки. Розміщення вмісту призначене лише для електронної пошти. Докладнішу інформацію див. У статті 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. Це може бути хорошою ідеєю, щоб включити його під час перевірки типів mime!


1
Це те, що я шукав подяку, необхідну для підтримки як останнього формату, так і попереднього.
Лі

42

Ви завжди повинні використовувати тип MIME нижче, якщо ви хочете подавати файл excel у форматі xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 

13

Для .xls використовуйте такий тип вмісту

application/vnd.ms-excel

Для формату файлів .xlsx для версії Excel 2007 і вище та вище

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 для генерації .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, перелічених у питанні:

Я виявив, що iMacs, як правило, також викидає MIME тип "text / xls" для файлів XLS Excel, сподіваюся, це допоможе.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.