PHPExcelではなくPhpSpreadsheetを使いましょう!!

PHPExcelではなくPhpSpreadsheetを使いましょう!! プログラミング

「PHP Excel」と検索すれば、いまだに「PHPExcel」に関する記事が出てきます。
しかし、PHPExcelはすでに開発が中止されています。

「PHPExcel – DEAD」
https://github.com/PHPOffice/PHPExcel

そして、PHPExcelの開発者自らが、公式ページで「死んだ」と表現しています。
さらには、PhpSpreadsheetを使うように主張しているのです。

本記事の内容

  • PhpSpreadsheetとは?
  • PhpSpreadsheetのインストール

それでは、上記に沿って解説していきます。

PhpSpreadsheetとは?

PhpSpreadsheetは、純粋なPHPで書かれたライブラリです。
つまり、拡張モジュール(soファイル)ではないとも言えます。

サポートされているファイル形式

PhpSpreadsheetは様々な形式のファイルを読み書きできるクラス群を提供しています。
そのファイル形式とは、以下。

フォーマット形式読み書き
Open Document Format/OASIS (.ods)
Office Open XML (.xlsx) Excel 2007 以降
BIFF 8 (.xls) Excel 97 以降
BIFF 5 (.xls) Excel 95
SpreadsheetML (.xml) Excel 2003
Gnumeric
HTML
SYLK
CSV
PDF(TCPDF、Dompdf、mPDFのどれかが必要)

上記を見る限り、そこそこ古いエクセルでも読むことは可能のようです。
確かに、古い形式のエクセルを出力する必要性はないでしょうからね。
「古い形式は、読むことさえできればOK」という考え方は合理的です。

ソフトウェア要件

PhpSpreadsheetの利用にあたっては、最も注意すべき点です。
2020年12月末時点では、PHPバージョン7.2以降がサポートされているPHPのバージョンとなります。

そして、サポートされる猶予期間は6ヵ月ということです。
例えば、PHP 7.2はすでにPHP公式では2020年11月30日にサポートが終了しています。
この場合、PhpSpreadsheetにおけるサポートは2021年5月末までということになります。

サポート期限に関しては、意識して利用する必要があります。
特に、クライアントに納品などする場合には。

PhpSpreadsheetのインストール

composerによるインストールが前提のようです。
インストールするコマンドは、以下。

$ composer require phpoffice/phpspreadsheet

コマンドラインのPHP(php-cli)の環境だと、以下をインストールする必要がありました。
OSは、Ubuntu 18.04.5です。

$ sudo apt install php-zip
$ sudo apt install php-gd
$ sudo apt install php-xml  

インストールが正常に完了したら、同じディレクトリに「vendor」が作成されています。

$ ls
composer.json  composer.lock  vendor

では、動作を確認しましょう。
公式サイトで紹介されているサンプルコードです。

test.php

<?php

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');

$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');

?>

上記プログラムを実行すると、 同じディレクトリ上「hello world.xlsx」というファイルが作成されています。

$ ls
composer.json   composer.lock  'hello world.xlsx'   test.php   vendor

hello world.xlsxを開くと、次のように表示されているはずです。

以上、PhpSpreadsheetのインストールです。

タイトルとURLをコピーしました