Impostazione del tipo mime per il documento Excel


361

MS Excel ha i seguenti tipi MIME osservati:

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

Esiste un tipo che funzionerebbe per tutte le versioni? In caso contrario, dobbiamo impostare individualmente response.setContentType()ciascuno di questi tipi di mime?

Inoltre, utilizziamo lo streaming di file nella nostra applicazione per visualizzare documenti (non solo eccellere - qualsiasi tipo di documento). In tal modo, come possiamo conservare il nome file se l'utente sceglie di salvare il file - attualmente, il nome del servlet che esegue il rendering del file appare come nome predefinito.


4
Più in generale, il modo migliore per scoprire quale MS stesso pensa sia il tipo corretto è quello di trovare un box con l'ultima versione installata e guardare HKCR/.xlsil Content Typevalore nel registro.
Rup,

3
"application / vnd.ms-office" è un altro tipo mime per i file XLS.
herrjeh42,

application/vnd-xlsfunziona anche per i .xlsfile.
mbomb007,

Fare riferimento a questo post per un elenco completo dei tipi MIME e delle relative estensioni di file Excel.
RBT

Risposte:


344

Credo che sia il tipo MIME standard per i file Excelapplication/vnd.ms-excel .

Per quanto riguarda il nome del documento, è necessario impostare la seguente intestazione nella risposta:

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

16
qual è la differenza tra application / msexcel e application / vnd.ms-excel?
Thabiso Mofokeng,

6
Se si desidera visualizzare il documento all'interno del browser (se supportato), la disposizione dei contenuti deve essere "in linea". Vedi stackoverflow.com/questions/1395151/…
flash

2
Dovresti evitare di utilizzare Content-Disposition in HTTP, ha considerazioni di sicurezza. La disposizione dei contenuti è solo per la posta elettronica. Vedi stackoverflow.com/questions/1012437 per maggiori informazioni.
Dzmitry Lazerka,

Si noti che per il formato di file XLSX Excel OpenXML è definito un tipo Mime diverso, vedere l'elenco completo al collegamento fornito.
Oskar Berggren,

@DzmitryLazerka qual è l'alternativa "sicura" alla disposizione dei contenuti? Seguendo il tuo link, quindi il link in quella risposta, quindi il link in quel documento, ci porta qui: tools.ietf.org/html/rfc6266#section-4.3 . Per quanto ne so, la preoccupazione per la sicurezza riguarda solo i nomi dei file forniti dagli utenti, se contengono caratteri non latini o caratteri non validi su alcuni sistemi operativi. Tutti i principali browser hanno garanzie contro queste preoccupazioni. Windows e Mac impostano anche un flag su un file che indica che proviene da Internet, facendo apparire un avviso quando si tenta di aprirlo.
Salta il

170

Svegliando un vecchio thread qui vedo, ma ho sentito l'impulso di aggiungere il "nuovo" formato .xlsx.

Secondo http://filext.com/file-extension/XLSX l'estensione per .xlsx è application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. Potrebbe essere una buona idea includerlo quando controlli i tipi di mime!


1
Questo era ciò che cercavo grazie, necessario per supportare l'ultimo formato e il precedente.
Lee,

42

Dovresti sempre usare sotto il tipo MIME se vuoi servire il file Excel in formato xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 

13

Per .xls usa il seguente tipo di contenuto

application/vnd.ms-excel

Per la versione di Excel 2007 e sopra il formato di file .xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

8

Stavo impostando il tipo MIME dal codice .NET come di seguito -

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

La mia applicazione genera Excel usando OpenXML SDK. Questo tipo MIME ha funzionato -

vnd.openxmlformats-officedocument.spreadsheetml.sheet

2

Sto usando EPPlus per generare file Excel .xlsx (basato su formato OpenXML). Per l'invio di questo file Excel come allegato nell'e-mail, utilizzo il seguente tipo MIME e funziona perfettamente con il file generato da EPPlus e si apre correttamente nell'anteprima del client di posta 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

Per chiunque stia ancora inciampando in questo dopo aver usato tutti i possibili tipi MIME elencati nella domanda:

Ho scoperto che gli iMac tendono a lanciare anche un tipo MIME di "text / xls" per i file XLS Excel, spero che questo aiuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.