XAMPP環境でPhpSpreadsheetをインストールしてExcelを読み書きする方法
XAMPP環境でPhpSpreadsheetをインストールしてExcelを読み書きする方法です。
>画像PHPでExcelの読み書きをする案件があり、調べたところ「PhpSpreadsheet」というライブラリを使えば、「新規Excelファイル作成」、「既存Excelファイルの読込」、「読込済みファイルの編集」などの操作ができることがわかりました。
環境はWindowsで、Webアプリケーションの開発環境である「XAMPP」下でExcel操作することを目的としています。
ここでは XAMPP環境でPhpSpreadsheetを使ってExcelを読み書きする方法 を紹介します。
目次
PhpSpreadsheetとは
PhpSpreadsheetとは、Excelをはじめとする各種スプレッドシート形式のファイルを読み書きできるライブラリです。「新規Excelファイル作成」、「既存Excelファイルの読込」、「読込済みファイルの編集」など、一連の操作が可能です。PHPのバージョン7.2以降で使えます。
PhpSpreadsheetのインストール
それでは「PhpSpreadsheet」のインストールについて説明していきます。
インストール環境
筆者の環境は下記のようになっています。
- OS: Windows 10 Pro 64-bit Ver.21H2
- XAMPP: Ver.7.4.1
- Control Panel: 3.2.4
- PHP: 7.4.1
Composerインストール
PhpSpreadsheetのインストールには、「Composer」が必要となります。Composerは、PHPライブラリの依存関係を管理するシステムです。
Composerのインストールは下記のページを参考にしてください。
Composerコマンドを実行する
composerコマンドができる任意のディレクトリで下記のコマンドを実行し、PhpSpreadsheetをインストールします。
ここでは「xampp/htdocs/examples/composer」で実行しています。
composer require phpoffice/phpspreadsheet
「7-ZIP」という圧縮・解凍ツールがインストールされている場合は、いったんアンインストールしておきましょう。なぜか以降のバッチ処理がエラーになります。
実行後「composer.json」やvendorフォルダ内に「autoload.php」があればOKです。
PhpSpreadsheetの使い方
PhpSpreadsheetを使うには、下記のような宣言をします。
require "./composer/vendor/autoload.php";
「xampp/htdocs/examples/」にphpファイルを置いた場合のパス設定です。
サンプルコードを書く
「xampp/htdocs/examples/」に、hello.phpファイルを作り、下記のコードを貼り付けてください。
<?php
require './composer/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.phpを作成します。
php hello.php
おおおー、hello world.xlsxができたー!
もちろん、ブラウザから実行しても動作します。チェックしてみてください。ただし「localhost/exapmles/hello.php」ではアクセスできないのでご注意を。
詳しくは「XAMPPで「examples」というURLが503エラーとなるのを解消する方法」で解説しているので気になる方はチェックしてみてください。
まとめ
XAMPP環境でPhpSpreadsheetを使ってExcelを読み書きする方法を紹介しました。
さて、サンプルは動いたので、次は案件に合わせた仕様で作りこみをしなければ。JavaでPOIを使ったExcel操作はよくやるけど、よくハマるのは日付とか数値とかの扱いですよね。この辺りは慣れてきたら記事にしていこうと思います。
おつかれさまでした。