JAVA サーバー PHP

iPhone iPadでExcelファイルを開くと文字化けする

JAVAやExcelで
PDFやExcel、Wordを作成し出力する際に、パソコン側では問題なくダウンロードするのにiPhone、iPadで実行するとうまく表示してくれない場合があります。

iPhoneでExcel開いたときの表示

原因

MIME TYPEがヘッダーに設定されていない、もしくはMIME TYPEの指定に誤りがあるとうまく開いてくれないようです。

上記ファイルはExcel2007以降のファイル(xlsx)のため【Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet】とヘッダーに指定してあげるとうまくいくようです。

[php title="PHPでのMIME TYPEの設定"]
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
/* 以下出力処理 /
[/php]
[java title="JavaでのMIME TYPEの設定" highlight="10"]
//JavaDriveさんのコードを引用させていただいてます。
import java.io.
;
import javax.servlet.*;
import javax.servlet.http.*;

public class Sample extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{

response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

/* 以下出力処理 */

}
}
[/java]

iPhoneでExcel開いたときの表示

うまく開くことができました。

octet-streamだとどうなるか

ダウンロード処理をさせるために【application/octet-stream】を設定しているサイトも多いと思いますが、iPhone、iPadではExcelファイルの表示をしてくれませんでした。

また、xlsxなのにxlsのMIME TYPEを設定しても表示できないようです。

 

適切なMIME TYPEの設定が必要

モバイル端末を使用しているユーザも対象にするなら適切なMIME TYPEを設定する必要があるのでシステム構築する&テストする際は注意が必要ですね。

Androidの場合はダウンロードマネージャがファイルをダウンロードしてくれるようなのでMIME TYPEを設定してなくても開けるようです。

MIME TYPE

形式 拡張子 MIME TYPE
Excel 2003 xls xlm application/vnd.ms-excel
Excel 2007 xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Excel 2007(マクロ有)

xlsm application/vnd.ms-excel.sheet.macroEnabled.12
Word 2003 doc application/msword
Word 2007 docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
Word 2007(マクロ有) docm application/vnd.ms-word.document.macroEnabled.12
PowerPoint 2003 ppt application/vnd.ms-powerpoint
PowerPoint 2007 pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
PowerPoint 2007(マクロ有) pptm application/vnd.ms-powerpoint.presentation.macroEnabled.12
PDF pdf application/pdf

 

参考サイト

・JavaDrive:コンテンツタイプの設定(setContentType)

・Microsft:2007 Office system ファイル形式の MIME タイプをサーバーで登録する

-JAVA, サーバー, PHP
-, , , ,

© 2020 かえでBlog