今回は PHPExcel で行う「ワークシート」の 「セル」への漢字(全角文字)の設定 について説明したいと思います。
本の紹介では...
PHP8の基本構文から、クラス、DB連携、セキュリティ対策まで、しっかり習得。
PHPプログラミングの標準教科書『独習PHP』が、最新のPHP8に対応。
PHPでWebページ/アプリケーションを開発する際に必要な基礎的な知識、
PHPの基本構文から、クラス、データベース連携、セキュリティまで、詳細かつ丁寧に解説します。
...
■ワークシートの「セル」への漢字(全角文字)の設定の簡単なプログラム(エラー発生)
ワークシートの setCellValue() メソッドで全角文字列を指定すれば問題無いであろうとも思って、以下の様なソースを実行しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php // ライブラリ読込 require_once './PHPExcel-1.8/Classes/PHPExcel.php' ; // PHPExcelオブジェクト作成 $objBook = new PHPExcel(); // ワークシートオブジェクト $objSheet = $objBook ->getActiveSheet(); // [A1]セルに文字列設定 $objSheet ->setCellValue( 'A1' , 'あいうえお漢字全角ABCDE' ); // [test5-1.xlsx]:Excel2007形式で保存する $objWriter = PHPExcel_IOFactory::createWriter( $objBook , "Excel2007" ); $objWriter ->save( 'test5-1.xlsx' ); exit (); ?> |
しかし、実際のエクセルファイル[test5-1.xlsx]を開くと以下の様な表示になります。 全角文字列がうまく反映していない様です。
■エラー発生したソースの文字コードの確認
上記のソースの文字コードを確認したら Shift-JIS コードになっていました。 これを UTF-8 に変更しプログラムを実行後、エクセルファイル(「test5-2.xlsx」としました)を開いてみると正しく文字が設定されました。
■ワークシートのデフォルトスタイルを使用したフォント設定
ワークシートの全てのセルに同じスタイルを設定したい場合に、デフォルトスタイルを設定します。
ワークシートのデフォルトスタイルを取得し(getDefaultStyle()メソッド)、 さらにそのスタイルからフォントオブジェクト取得します(getFont()メソッド)。
フォントオブジェクトの setName() メソッドでフォント名を設定し、 setSize() メソッドでフォントサイズを設定します。
セルの縦位置の設定には、デフォルトスタイルからアライメントオブジェクトを取得し setVertical() メソッドでセルの縦方向の設定をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php // ライブラリ読込 require_once './PHPExcel-1.8/Classes/PHPExcel.php' ; // PHPExcelオブジェクト作成 $objBook = new PHPExcel(); // ワークシートオブジェクト $objSheet = $objBook ->getActiveSheet(); // デフォルトスタイルオブジェクト取得 $objDefaultStyle = $objSheet ->getDefaultStyle(); // フォントオブジェクト取得 $objFont = $objDefaultStyle ->getFont(); // フォント名設定 $objFont ->setName( 'MS Pゴシック' ); // フォントサイズ設定 $objFont ->setSize(12); // アライメントオブジェクトでセルの縦方向の設定 $objDefaultStyle ->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); // [A1]セルに文字列設定 $objSheet ->setCellValue( 'A1' , 'あいうえお漢字全角ABCDE' ); // [A2]セルに[A1]と同じ文字列設定 $objSheet ->setCellValue( 'A2' , 'あいうえお漢字全角ABCDE' ); // [A3]セルに数値設定 $objSheet ->setCellValue( 'A3' , '123456789' ); // [test5-3.xlsx]:Excel2007形式で保存する $objWriter = PHPExcel_IOFactory::createWriter( $objBook , "Excel2007" ); $objWriter ->save( 'test5-3.xlsx' ); exit (); ?> |
出力されたエクセルファイルを見てみると以下の様になります。
これは余談ですが、上記のソースでオブジェクトを変数で受けて処理していますが、以下の様に一気に書いてしまっても問題はありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php // ライブラリ読込 require_once './PHPExcel-1.8/Classes/PHPExcel.php' ; // PHPExcelオブジェクト作成 $objBook = new PHPExcel(); // ワークシートオブジェクト $objSheet = $objBook ->getActiveSheet(); // フォント名設定 $objSheet ->getDefaultStyle()->getFont()->setName( 'MS Pゴシック' ); // フォントサイズ設定 $objSheet ->getDefaultStyle()->getFont()->setSize(12); // アライメントオブジェクトでセルの縦方向の設定 $objSheet ->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); // [A1]セルに文字列設定 $objSheet ->setCellValue( 'A1' , 'あいうえお漢字全角ABCDE' ); // [A2]セルに[A1]と同じ文字列設定 $objSheet ->setCellValue( 'A2' , 'あいうえお漢字全角ABCDE' ); // [A3]セルに数値設定 $objSheet ->setCellValue( 'A3' , '123456789' ); // [test5-3.xlsx]:Excel2007形式で保存する $objWriter = PHPExcel_IOFactory::createWriter( $objBook , "Excel2007" ); $objWriter ->save( 'test5-3.xlsx' ); exit (); ?> |
関連する記事
⇒PHP エクセルファイル出力の方法について(PHPExcel)⇒PHP PHPExcel エクセルのワークシートの処理について
⇒PHP PHPExcel エクセルのワークシートのセルへのアクセスについて
⇒PHP PHPExcel エクセルのワークシートのセルへのアクセスについて(行・列指定)
⇒PHP PHPExcel エクセルのワークシートのセルへ漢字(全角文字)の設定について
⇒PHP PHPExcel エクセルのワークシートのセルのスタイル設定について
⇒PHP PHPExcel エクセルのワークシートのセルの条件付き書式設定について
⇒PHP PHPExcel エクセルのワークシートのセルのデータ入力規則設定について
⇒PHP PHPExcel エクセルのワークシートの「列(カラム)・行」の「幅、表示・非表示、グループ化/アウトライン化」設定について
⇒PHP PHPExcel エクセルのワークシートの紙の大きさやページ設定について
⇒PHP PHPExcel CSVファイルの読み込み・書き込みについて
⇒PHP PHPExcel セル内の文字列のフォントサイズを変える方法について
ショッピングサイト一通りを最初から自分で作ってみることで、PHPでのシステム開発を学べる入門書です。
コメント