[PHP]大量データがあるExcelの読み込みライブラリの紹介
こんにちは、[あなたの名前]です。
今日はPHPで大量の行数があるExcelファイルを読み込むために使用できるライブラリ「OpenSpout」を紹介したいと思います。
検証環境
- OS:macOS Monterey 12.6.1
- PHPバージョン:8.1
OpenSpoutとは
OpenSpoutはXLSX、ODS、CSVの3種類のスプレッドシートをサポートしており、大規模なファイルを高速に読み書きできるライブラリです。MITライセンスのため、商用利用も可能です。
OpenSpout動作要件
- PHPバージョン 8.0以上
- PHP拡張
PHP_zip
必須 - PHP拡張
PHP_xmlreader
必須
インストール方法
OpenSpoutはcomposerから直接インストールできます。composer.json
に以下を追加してください。
"require": {
"openspout/openspout": "^v4.13.1"
}
その後、以下のコマンドを実行します。
$ composer install
OpenSpout使用例
以下は、Excelファイルを読み込んでシートの行を配列で返すサンプルコードです。
use OpenSpout\Reader\XLSX\Reader as XLSXReader;
// インスタンス作成
$reader = new XLSXReader();
// ファイルを開く
$reader->open('ファイル名.xlsx');
// セルデータ配列
$cells_data = [];
// Excelファイル全体の読み込み
foreach ($reader->getSheetIterator() as $sheet) {
// 取得対象のシートかどうか
if ($sheet->getName() === 'シート名') {
// 一行ずつ行の内容を取得
foreach ($sheet->getRowIterator() as $row) {
// 行のセルをまとめて配列で返す
$cells_data[] = $row->toArray();
}
// シートがない場合処理終了
break;
}
}
// ファイルを閉じる
$reader->close();
最後に
OpenSpoutを使用した感想ですが、複雑なコードを書かなくてもシンプルで理解しやすく扱いやすかったです。PHPで大量データがあるExcelファイルを扱う際には、OpenSpoutを候補にしてみてはいかがでしょうか。
株式会社ウイングドアは福岡のシステム開発会社です。現在、私達と一緒に”楽しく仕事が出来る仲間”として、新卒・中途採用を絶賛募集しています!ウイングドアの仲間達となら楽しく仕事できるかも?と興味をもった方、お気軽にお問い合わせ下さい!
FAQ
Q1: OpenSpoutはどのようなスプレッドシート形式をサポートしていますか?
A1: OpenSpoutはXLSX、ODS、CSVの3種類のスプレッドシート形式をサポートしています。
Q2: OpenSpoutを使用するためのPHPバージョンは何ですか?
A2: PHPバージョン8.0以上が必要です。
Q3: OpenSpoutのインストール方法は?
A3: composerを使用してインストールできます。composer.json
に"openspout/openspout": "^v4.13.1"
を追加し、composer install
コマンドを実行してください。
Q4: 商用利用は可能ですか?
A4: はい、OpenSpoutはMITライセンスで提供されているため、商用利用も可能です。
Q5: Excelファイルの特定のシートのみを読み込む方法は?
A5: シート名を指定して、getSheetIterator
で取得したシートの名前と比較し、特定のシートの場合のみ行データを取得することができます。