PHPExcelで数値、文字列、金額、日付、画像をシートに書き込むサンプル
最近どうもExcelを扱うことが多いので、久しぶりにPHPExcelを触ってみたメモ。
以前PhpSpreadsheetを紹介したけれど、あえてPHPExcelを選んだのは困った時に検索などで情報を得やすいため。
環境
- PHP 7.0.22
- PHPExcel 1.8.1
composer.jsonはこんな感じ。
{ "require": { "phpoffice/phpexcel": "^1.8" } }
サンプルコード
サンプルで使用している画像はPHPのロゴ。
<?php require 'vendor/autoload.php'; date_default_timezone_set('Asia/Tokyo'); // http://php.net/images/logos/php-med-trans.png $imagePath = 'php-med-trans.png'; // サンプルデータを適当に生成 $rows = array_map(function ($i) { return [ $i, // 数値 uniqid(), // 文字列 rand(10000, 100000), // 数値(金額) strftime('%Y-%m-%d', rand(0, time())), // 日付 ]; }, range(1, 20)); $book = new PHPExcel(); $sheet = $book->getActiveSheet(); $offset = 1; foreach ($rows as $i => $row) { $rowNum = $i + $offset; // 数値をセルに書き込み $sheet->setCellValueByColumnAndRow(0, $rowNum, $row[0]); // 文字列をセルに書き込み $sheet->setCellValueByColumnAndRow(1, $rowNum, $row[1]); // 数値をセルに書き込んで、書式を日本円に変更 $sheet->setCellValueByColumnAndRow(2, $rowNum, $row[2], true) ->getStyle() ->getNumberFormat() ->setFormatCode('"¥"#,##0'); $dt = DateTime::createFromFormat('Y-m-d', $row[3]); $date = PHPExcel_Shared_Date::PHPToExcel($dt, true, 'Asia/Tokyo'); // 日付をセルに書き込んで、書式をYYYY/MM/DD形式に変更 $sheet->setCellValueByColumnAndRow(3, $rowNum, $date, true) ->getStyle() ->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH); // 画像をセルに書き込み (new PHPExcel_Worksheet_Drawing()) ->setPath($imagePath) ->setWorksheet($sheet) ->setHeight(30) ->setCoordinates(PHPExcel_Cell::stringFromColumnIndex(4) . $rowNum); // 行の高さを画像にあわせて変更 $sheet->getRowDimension($rowNum)->setRowHeight(30); } // ファイルに書き出し $writer = PHPExcel_IOFactory::createWriter($book, 'Excel2007'); $writer->save('sample.xlsx');
生成されるファイル
こんな雰囲気。Excelが手元にないのでLibreOfficeで表示しています。
まとめ
見やすいドキュメントが見つからなかったものの、サンプルコードを読みつつ、PhpStormなどでコード補完が使えればなんとか使える。
レポートなどではGoogleスプレッドシートが使われることも多くなってきていますが、まだまだExcelとはお付き合いが続きますね。
仕事で使っているのがMicrosoft Office for Mac Home and Business 2011なので、そろそろOffice 365あたりに変えたいところ。特に評価シートを書いている途中で落ちるのがつらい。
【購入特典付】Microsoft Office 365 Solo (1年版)|オンラインコード版|Win/Mac対応
- 出版社/メーカー: マイクロソフト
- 発売日: 2014/10/17
- メディア: Software Download
- この商品を含むブログ (6件) を見る