PHPでExcelを出力するのは業務システムではよくありそうだが、今回はExcelファイルのアップロードからの読込でシートからデータを取得するという要望があった。
なのでPhpSpreadsheetを使用してExcelからデータを取得する方法についてメモメモ。
PhpSpreadsheetオフィシャルドキュメント
https://phpspreadsheet.readthedocs.io/en/develop/
Github/PhpSpreadsheet
https://github.com/PHPOffice/PhpSpreadsheet
Packagist/PhpSpreadsheet
https://packagist.org/packages/phpoffice/phpspreadsheet
PHPの対応バージョン 5.6以上
必要なextension
php_zip
php_xml
php_gd2
PhpSpreadsheet 2018年10月現在の最新バージョン
1.4.1
目次
PhpSpreadsheetのインストール
これは、composerを使用してインストールを行う。
composer require phpoffice/phpspreadsheet
サンプルコード
サンプルなのでファイルアップロードは省略。
// 読込だけならIOFactoryのみでOK use PhpOffice\PhpSpreadsheet\IOFactory; class Sample1 { public function readExcel() { $inputFileName = '/temp/sample.xlsx'; $inputFileType = IOFactory::identify($inputFileName); $reader = IOFactory::createReader($inputFileType); $spreadsheet = $reader->load($inputFileName); // 第1引数はセルに値が無い場合にセットする値を指定する // 第2引数はセルに計算式が入っている場合、trueだと計算結果をfalseなら式をそのまま取得する // 第3引数はセルの書式に各種フォーマットなどが設定されている場合にtrueだとフォーマット済みの値を取得する。falseの場合はセルの入力値を取得する // 第4引数をfalseにすることで0から始まる数字をキーにした配列となる。trueの場合は、A1形式の値をキーにした配列となる $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true); print_a($sheetData,'label:excel読込結果'); } }
実行結果
toArray(null, true, true, true) パターン
toArray(null, false, true, true) パターン
toArray(null, true, false, true) パターン
取得結果は配列で取得した方が利用しやすいので「toArray」の第4引数は「false」がよさそうです。
フォーマット済みの結果で取得するかしないかはシートデータによりけりかな
0件のコメント