今回はPHPでのエクセルファイルの作成についてです。
ライブラリは、PHPExcelを使用しています。
まずは事前準備から。
ライブラリ導入は、Githubからダウンロードしてきて、requre_once で読み込むだけでOKです。
URLはこちらから。
PHPOffice/PHPExcel
https://github.com/PHPOffice/PHPExcel.git
//ライブラリ読み込み require_once APPPATH.'../packages/excel/Classes/PHPExcel.php'; require_once APPPATH.'../packages/excel/Classes/PHPExcel/IOFactory.php';
パスは任意の場所に修正してください。
そしてエクセルファイルの作成から、編集するシートの設定までは下記の通り。
// PHPExcelオブジェクトを生成する $book = new PHPExcel(); // テンプレート読み込み $phpexcel = \PHPExcel_IOFactory::load('./tmp/template.xlsx'); $phpexcel->setActiveSheetIndex(0); // カレントシート選択 $sheet = $phpexcel->getActiveSheet(); // シート名変更 $sheet->setTitle('データ');
今回はテンプレートを読み込んでいますが、もちろん新規のファイルを作成して、それを編集することも可能です。
セルに文字列や数値を入れる時は setCellValue() や setCellValueExplicit() メソッドを使います。
// 数値 $sheet->setCellValue('A2', 0123); // 文字列 $sheet->setCellValueExplicit('A1', "あいうえお", \PHPExcel_Cell_DataType::TYPE_STRING);
このあたりは分かりやすいですね。
本題はここから。
セルの書式設定を変える方法は下記のとおりです。
// 数値表示(小数点第2位まで) $sheet->setCellValue('B1', 12.345); $sheet->getStyle('B1')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00); // 12.35 // 数値表示(小数点第2位まで & 3桁でカンマ区切り) $sheet->setCellValue('B2', 8765.4321); $sheet->getStyle('B2')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1); // 8,765.43 // パーセント表示(小数点第2位まで) $sheet->setCellValue('B3', 0.56789); $sheet->getStyle('B3')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00); // 56.79%
上記のように表示形式の定数が設定されており、それを指定して使用することができます。
他にもありましたが、使用頻度が高そうなのはこのあたりかな。
なお、下記のように自分で指定することもできます。
// 数値表示(3桁でカンマ区切り) $sheet->setCellValue('C1', 12345); $sheet->getStyle('C1')->getNumberFormat()->setFormatCode('#,##0'); // 12,345
指定方法は、エクセルのセルの書式設定の時と同じですね。
こちらの方法を使えば、小数値をパーセントに直すときに、100をかけて、% を後ろにつけて…なんて作業をやらずに済みますね。
というか、最初表示形式の指定方法を知らなくて、上のように文字列でパーセント表示をさせようとしてしまいました。
当たり前ですが、こちらの方が遥かに楽です。
また、エクセルを開いたときに時折見かける、「数値が文字列として保存されています」という警告も防げます。
個人的には、これが一番嬉しいですね。
ということで、PHPExcelの知っているとちょっと便利なメソッドでした。