MIME-Typ für Excel-Dokument einstellen

361

MS Excel weist die folgenden beobachteten MIME-Typen auf:

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

Gibt es einen Typ, der für alle Versionen funktioniert? Wenn nicht, müssen wir für response.setContentType()jeden dieser MIME-Typen einzeln festlegen ?

Außerdem verwenden wir in unserer Anwendung das Datei-Streaming, um Dokumente anzuzeigen (nicht nur Excel - jede Art von Dokument). Wie können wir dabei den Dateinamen beibehalten, wenn der Benutzer die Datei speichert? Derzeit wird der Name des Servlets, das die Datei rendert, als Standardname angezeigt.

Subramanian
quelle
4
Allgemeiner gesagt , zu finden die beste Art und Weise, was MS selbst denkt , die richtige Art ist , ist eine Box mit der neuesten Version installiert und Blick auf finden HKCR/.xls‚s - Content TypeWert in der Registrierung.
Rup
3
"application / vnd.ms-office" ist ein weiterer MIME-Typ für XLS-Dateien.
Herrjeh42
application/vnd-xlsfunktioniert auch für .xlsDateien.
mbomb007
In diesem Beitrag finden Sie eine vollständige Liste der MIME-Typen und der zugehörigen Excel-Dateierweiterungen.
RBT

Antworten:

344

Ich glaube, der Standard- MIME-Typ für Excel- Dateien ist application/vnd.ms-excel.

In Bezug auf den Namen des Dokuments sollten Sie in der Antwort den folgenden Header festlegen:

header('Content-Disposition: attachment; filename="name_of_excel_file.xls"');
jbochi
quelle
16
Was ist der Unterschied zwischen application / msexcel und application / vnd.ms-excel?
Thabiso Mofokeng
6
Wenn Sie das Dokument im Browser anzeigen möchten (falls unterstützt), muss Content-Disposition "inline" sein. Siehe stackoverflow.com/questions/1395151/…
Flash
2
Sie sollten die Verwendung von Content-Disposition in HTTP vermeiden, da dies Sicherheitsaspekte berücksichtigt. Content-Disposition ist nur für E-Mail. Weitere Informationen finden Sie unter stackoverflow.com/questions/1012437 .
Dzmitry Lazerka
Beachten Sie, dass für das OpenXML Excel XLSX-Dateiformat ein anderer Mime-Typ definiert ist. Die vollständige Liste finden Sie unter dem angegebenen Link.
Oskar Berggren
@DzmitryLazerka Was ist die "sichere" Alternative zur Inhaltsdisposition? Wenn Sie Ihrem Link folgen , dann der Link in dieser Antwort und dann der Link in diesem Dokument, gelangen Sie hierher: tools.ietf.org/html/rfc6266#section-4.3 . Soweit ich das beurteilen kann, handelt es sich bei der Sicherheitsbedenken lediglich um Dateinamen, die von Benutzern bereitgestellt werden - wenn diese nicht-lateinische Zeichen enthalten oder Zeichen, die auf einem Betriebssystem ungültig sind. Alle gängigen Browser sind gegen diese Bedenken geschützt. Windows und Mac setzen außerdem ein Flag für eine Datei, das angibt, dass sie aus dem Internet stammt, und geben beim Versuch, sie zu öffnen, eine Warnung aus.
Kip
170

Ich sehe hier einen alten Thread, aber ich hatte das Bedürfnis, das "neue" XLSX-Format hinzuzufügen.

Laut http://filext.com/file-extension/XLSX ist die Erweiterung für .xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. Es könnte eine gute Idee sein, es bei der Suche nach MIME-Typen einzubeziehen!

Karlis ritt
quelle
1
Dies war das, wonach ich gesucht habe, danke, um das neueste Format sowie das vorherige zu unterstützen.
Lee
42

Sie sollten immer den folgenden MIME-Typ verwenden, wenn Sie eine Excel-Datei im XLSX- Format bereitstellen möchten

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 
Siva Kranthi Kumar
quelle
13

Verwenden Sie für XLS den folgenden Inhaltstyp

application/vnd.ms-excel

Für Excel 2007- Version und höher .xlsx- Dateiformat

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Dulith De Costa
quelle
8

Ich habe den MIME-Typ aus dem .NET-Code wie folgt festgelegt:

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

Meine Anwendung generiert Excel mit OpenXML SDK. Dieser MIME-Typ hat funktioniert -

vnd.openxmlformats-officedocument.spreadsheetml.sheet
Divyans Mahansaria
quelle
2

Ich verwende EPPlus , um eine XLSX-Excel-Datei (OpenXML-Format) zu generieren. Zum Senden dieser Excel-Datei als Anhang in einer E-Mail verwende ich den folgenden MIME-Typ. Er funktioniert einwandfrei mit der von EPPlus generierten Datei und wird ordnungsgemäß in der Vorschau des MS-Outlook-E-Mail-Clients geöffnet.

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);
}
Vishwajit G.
quelle
0

Für alle, die immer noch darüber stolpern, nachdem sie alle in der Frage aufgeführten möglichen MIME-Typen verwendet haben:

Ich habe festgestellt, dass iMacs dazu neigen, auch einen MIME-Typ von "text / xls" für XLS-Excel-Dateien zu werfen. Ich hoffe, dies hilft.

be_es
quelle