かえでBlog

色々なことを徒然と……

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】とヘッダーに指定してあげるとうまくいくようです。

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
/* 以下出力処理 */
//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");

    /* 以下出力処理 */
    
  }
}

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, サーバー , , , ,