PHPExcelでxlsx拡張子による日本語出力 - PHPプロ!Q&A掲示板

4840

  • 0P

PHPExcelでxlsx拡張子による日本語出力

質問日時 / 2017年5月1日 09:47 (最終編集:5月1日 16:43)    回答数 / 1件

Questioner:  mitchan  このエントリーをはてなブックマークに追加 

キーワード / PHPExcel    日本語    xlsx   

はじめて質問させていただきます、よろしくお願いいたします。

表題どおりなのですが、PHPExcelを使用して、
エクセルの拡張子xlsxへの日本語出力が空白になるので
どうすれば正しく出力されるのでしょうか?
もしくは空白出力がPHPExcelの仕様なのでしょうか?

ほとんどPHPExcelのサンプルと同様な内容ですが、
以下のコードで「カタカナ」「漢字」以外は正しい内容が出力されますし、
Excel5で拡張子xlsだとすべて正しく出力されます。

  1. $objPHPExcel = new PHPExcel();
  2. $objPHPExcel->setActiveSheetIndex(0);
  3. $objSheet = $objPHPExcel->getActiveSheet();
  4. $objSheet->setCellValue('A1', mb_convert_encoding('ひらがな', 'UTF-8'));
  5. $objSheet->setCellValue('A2', mb_convert_encoding('カタカナ', 'UTF-8'));
  6. $objSheet->setCellValue('A3', mb_convert_encoding('タイトル', 'UTF-8'));
  7. $objSheet->setCellValue('A4', mb_convert_encoding('漢字', 'UTF-8'));
  8. $objSheet->setCellValue('B2', date("Y/m/d")); 
  9. $objSheet->setCellValue('C3', 5000*5); 
  10. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  11. $objWriter->save('smple_test.xlsx');

環境 PHPExcel 1.8.1、PHP7、IIS8.5 windowsサーバー 2012R2

もし情報が足りなければ御指示下さいませ。
どうかよろしくお願いいたします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimix>空白出力がPHPExcelの仕様なのでしょうか? いや

回答一覧

並び替え:

A01 満足
answerershimix [5月2日 11:20]

>空白出力がPHPExcelの仕様なのでしょうか?

いや、そんな仕様はあり得ません(苦笑

xampp5.6.11で試しましたが問題なく作成出来ますね。私の環境では原因追求はちょっと難儀です(手元にIIS環境がない・・・)。

ひとつ気になったのは、mb_convert_encoding()は何のために入っているんでしょうか?ソース自体がutf-8ですよね。変換は不要じゃないかと。from_encodingを省略しているのでmb_internal_encodingからutf-8へ変換することになりますが・・・

でも

>Excel5で拡張子xlsだとすべて正しく出力されます。

ということですし、Excel作成前にechoなどで確認もされているでしょうからねぇ。Excel5とExcel2007でPHPExcel内部の処理は全然違うので(Excel2007の)XML書き出しに何かあるのか・・・。いずれにしても現象が再現できる環境が必要ですね(汗

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)