大量データがあるExcelの読み込みライブラリの紹介

[PHP]大量データがあるExcelの読み込みライブラリの紹介

こんにちは、[あなたの名前]です。

今日はPHPで大量の行数があるExcelファイルを読み込むために使用できるライブラリ「OpenSpout」を紹介したいと思います。

検証環境

  • OS:macOS Monterey 12.6.1
  • PHPバージョン:8.1

OpenSpoutとは

OpenSpoutはXLSX、ODS、CSVの3種類のスプレッドシートをサポートしており、大規模なファイルを高速に読み書きできるライブラリです。MITライセンスのため、商用利用も可能です。

GitHubリポジトリ

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で取得したシートの名前と比較し、特定のシートの場合のみ行データを取得することができます。

上部へスクロール