PHPExcelの後継っぽいPhpSpreadsheetでExcelファイルを読み書きするサンプルコード
PHPでExcel
PHPでExcelを操作する。というと「やめておけ」という言葉の次に上がってくる有名なライブラリは、PHPExcelではないかと思います。
溜まりに溜まったIssuesとPull Requestsの数を見ると不安な気持ちになってしまいますが、後継のライブラリーが開発中のようです。
PHPExcel vs PhpSpreadsheet ? に書いてある通り、PHPExcelと互換性のない変更が含まれるため別プロジェクトになっているようで、開発もPhpSpreadsheetに注力しており、PHPExcelはもうメンテナンスされていないということについても明言されています。
サンプルコード
まだ安定版がリリースされていませんが、PhpSpreadsheetを使った簡単なサンプルコードを書いてみました。
動作環境
HomebrewでインストールしたPHP7.0で動作確認しました。
$ php -v PHP 7.0.17 (cli) (built: Mar 18 2017 20:13:50) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
composer.json
composer.json
は以下のようになっています。
{ "require": { "phpoffice/phpspreadsheet": "dev-develop" } }
安定版がなので dev-develop
を指定しています。
読み込みに使用するExcelファイル
以下のようなファイルを使用します、手元にExcelがないので、ファイルはNumbersで作りました。
サンプルコード本体
Excelファイルから特定の範囲を読み出し、各値を2乗したものを別ファイルに書き出すものです。
書き出し先はExcelファイルとCSVファイルの2パターン用意しました。
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Settings; use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader; use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxWriter; use PhpOffice\PhpSpreadsheet\Writer\CSV as CSVWriter; /* * 読み込みサンプル */ $reader = new XlsxReader(); $spreadsheet = $reader->load('sample1.xlsx'); $sheet = $spreadsheet->getActiveSheet(); // B2からD4までの領域を2次元配列として取得する $dataArray = $sheet->rangeToArray('B2:D4'); /* * 書き出しサンプル */ // 上記のサンプルコードで読み出した各値を2乗する array_walk_recursive($dataArray, function (&$x) { $x = $x ** 2; }); // B1を起点として2次元配列をシートに書き込む $sheet->fromArray($dataArray, null, 'B2'); // Excel(.xlsx)として書き出す $writer = new XlsxWriter($spreadsheet); $writer->save('sample2.xlsx'); // CSVとして書き出す $writer = new CSVWriter($spreadsheet); $writer->save('sample2.csv');
実行結果
実行結果として書き出された sample2.xlsx
は以下のようになります。
また、 sample2.csv
はこのようになります。
"","列1","列2","列3","列4" "行1","1","4","9","4" "行2","25","36","49","8" "行3","81","100","121","12" "行4","13","14","15","16"
まとめ
まだ開発中ではありますが、どうしてもPHPでExcelを操作しなければならない時はPHPExcelとあわせてPhpSpreadsheetも検討してみるといいかもしれません。
なんだかんだExcelとの付き合いは続くものですね。
Microsoft Excel 2016 (最新)|オンラインコード版|Windows版
- 出版社/メーカー: マイクロソフト
- 発売日: 2015/09/30
- メディア: Software Download
- この商品を含むブログを見る