ExcelドキュメントのMIMEタイプを設定する


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()、これらのMIMEタイプを個別に設定する必要がありますか?

また、アプリケーションでファイルストリーミングを使用してドキュメントを表示します(Excelだけでなく、あらゆる種類のドキュメント)。そうすることで、ユーザーがファイルを保存することを選択した場合、どのようにファイル名を保持できますか?現在、ファイルをレンダリングするサーブレットの名前がデフォルト名として表示されます。


4
より一般的には、MS自身が正しいタイプであると考えるものを見つける最良の方法は、最新バージョンがインストールされているボックスを見つけて、レジストリHKCR/.xlsののContent Type値を確認することです。
2012

3
「application / vnd.ms-office」は、XLSファイルの別のMIMEタイプです。
herrjeh42 2014年

application/vnd-xls.xlsファイルに対しても機能します。
mbomb007 2016年

MIMEタイプと関連するExcelファイル拡張子の完全なリストについては、この投稿を参照しください。
RBT

回答:


344

Excelファイルの標準MIMEタイプはだと思いますapplication/vnd.ms-excel

ドキュメントの名前については、応答に次のヘッダーを設定する必要があります。

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

16
application / msexcelとapplication / vnd.ms-excelの違いは何ですか?
Thabiso Mofokeng

6
ブラウザー内でドキュメントを表示したい場合(サポートされている場合)、Content-Dispositionを「インライン」にする必要があります。stackoverflow.com/questions/1395151/…を
フラッシュ

2
HTTPでContent-Dispositionを使用することは避けてください。セキュリティに関する考慮事項があります。Content-Dispositionはメール専用です。詳細については、stackoverflow.com / questions / 1012437をご覧ください。
Dzmitry Lazerka 2014

OpenXML Excel XLSXファイル形式の場合、別のMIMEタイプが定義されていることに注意してください。提供されているリンクの完全なリストを参照してください。
Oskar Berggren、

@DzmitryLazerkaコンテンツ処理の「安全な」代替手段は何ですか?あなたのリンク、そしてその回答のリンク、そしてそのドキュメントのリンクをたどると、私たちはここに行きます:tools.ietf.org/html/rfc6266#section-4.3。私の知る限り、セキュリティの問題は、ユーザーが提供するファイル名(ラテン文字以外の文字、または一部のOSでは無効な文字が含まれている場合)に関係しています。すべての主要なブラウザは、これらの懸念に対する保護手段を備えています。WindowsとMacでは、ファイルがインターネットからのものであることを示すフラグも設定されており、開こうとすると警告が表示されます。
2015年

170

ここで古いスレッドを目覚めさせますが、「新しい」.xlsx形式を追加する衝動を感じました。

http://filext.com/file-extension/XLSXによると、.xlsxの拡張子はapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetです。MIMEタイプをチェックするときに、これを含めることをお勧めします。


1
これは、以前のバージョンだけでなく最新のフォーマットをサポートするために必要な、私が探していたものです。
Lee

42

Excelファイルをxlsx形式で提供する場合は、常に以下のMIMEタイプを使用する必要があります

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 

13

.XLS以下のコンテンツタイプを使用

application/vnd.ms-excel

以下のためのExcel 2007のバージョンと、上記の.xlsxファイル形式

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

8

以下のように.NETコードからMIMEタイプを設定していました-

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

私のアプリケーションはOpenXML SDKを使用してExcelを生成します。このMIMEタイプは機能しました-

vnd.openxmlformats-officedocument.spreadsheetml.sheet

2

私が使用していますEPPlusを(OpenXML形式ベース)Excelファイルを生成するの.xlsx。この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はXLS Excelファイルに対して「text / xls」のMIMEタイプもスローする傾向があることを発見しました。これが役立つことを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.