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)すべてのバージョンで機能するタイプはありますか?そうでない場合は、これらのMIMEタイプのそれぞれにresponse.setContentType()
を個別に設定する必要がありますか?
また、アプリケーションでファイルストリーミングを使用してドキュメントを表示します(Excelだけでなくあらゆるタイプのドキュメント)。その際、ユーザーがファイルを保存することを選択した場合にファイル名を保持する方法 - 現在、ファイルをレンダリングするサーブレットの名前がデフォルトの名前として表示されます。
Excelの標準的な MIMEタイプ はapplication/vnd.ms-Excel
であると思います。
文書の名前に関しては、応答に次のヘッダを設定する必要があります。
header('Content-Disposition: attachment; filename="name_of_Excel_file.xls"');
ここで古いスレッドを目覚めさせますが、私は「新しい」.xlsxフォーマットを追加することを強く望みました。
http://filext.com/file-extension/XLSX によると、.xlsxの拡張子はapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
です。 MIMEタイプをチェックするときに含めることをお勧めします。
Excelファイルをxlsxの形式で提供する場合は、常にMIMEタイプ以下を使用する必要があります。
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
私は以下のように.NETコードからMIMEタイプを設定していました -
File(generatedFileName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
私のアプリケーションはOpenXML SDKを使ってExcelを生成します。このMIMEタイプはうまくいきました -
vnd.openxmlformats-officedocument.spreadsheetml.sheet
。xlsには、次のcontent-typeを使用してください。
application/vnd.ms-Excel
Excel 2007バージョン以上。xlsxファイル形式
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
私は 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);
}
質問にリストされている可能性のあるすべてのMIMEタイプを使用した後でまだこれに悩まされている人のために:
私は、iMacがXLSのExcelファイルに対しても "text/xls"のMIMEタイプを投げる傾向があることを発見しました。