PHPでExcelを読み書きできるPhpSpreadsheetのインストールと簡単な使い方

最終更新日: 公開日: 2023年11月

PhpSpreadsheetとは

PhpSpreadsheetとは、ExcelやLibreOfficeCalcなどのスプレッドシートファイルを簡単に読み書き操作できる、PHPのフリーのライブラリです。
これとは別に PHPExcel というライブラリもありますが、PhpSpreadsheetはPHPExcelの次世代バージョンという位置づけです。PHPExcelのプロジェクトは2019年に凍結され、新バージョンのPHPにも対応していません。現状、PHPでExcelを扱う場合はPhpSpreadsheet一択となっています。

PhpSpreadsheetの対応PHPバージョン

対応しているPHPのバージョンはPHP8.0以上です。 (2023/11/16現在)

PhpSpreadsheetのインストール方法

インストールは簡単で、PHPのライブラリ管理ツールである「Composer」を使用します。

composer require phpoffice/phpspreadsheet

でインストールされます。

PhpSpreadsheetの使い方・コード

サンプルとして、下図のようなエクセルを出力するコードを書いてみます。

excel.php

  1. <?php
  2. // 必要なライブラリの読み込み
  3. require 'vendor/autoload.php';
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  6. // スプレッドシートインスタンスを作成
  7. $spreadsheet = new Spreadsheet();
  8. $sheet = $spreadsheet->getActiveSheet();
  9. // 1行目の属性ラベル
  10. $sheet->setCellValue('A1', '氏名');
  11. $sheet->setCellValue('B1', '性別');
  12. $sheet->setCellValue('C1', '生年月日');
  13. // 2行目以降の個人データ
  14. $sheet->setCellValue('A2', 'レクタス 太郎'); // 氏名
  15. $sheet->setCellValue('B2', '男'); // 性別
  16. $sheet->setCellValue('C2', '1998/5/1'); // 生年月日
  17. $sheet->setCellValue('A3', 'レクタス 花子');
  18. $sheet->setCellValue('B3', '女');
  19. $sheet->setCellValue('C3', '1997/12/10');
  20. $sheet->setCellValue('A4', 'レクタス 次郎');
  21. $sheet->setCellValue('B4', '男');
  22. $sheet->setCellValue('C4', '1995/4/30');
  23. // Excelファイルの書き出し
  24. $writer = new Xlsx($spreadsheet);
  25. $writer->save('名簿.xlsx');

実行してみます。

php excel.php

出力された 名簿.xlsx をエクセルで開いてみます。

きちんと出力されていますが、A列の列幅が狭く、氏名が表示しきれていません。
下記の列幅自動調整のコードを、Excel書き出しの直前に入れてみます。

  1. $sheet->getColumnDimension('A')->setAutoSize(true);
  2. $sheet->getColumnDimension('B')->setAutoSize(true);
  3. $sheet->getColumnDimension('C')->setAutoSize(true);

再度実行しExcelで開いてみます。

今度は幅も問題なく出力されました。(Excelで自動調整した時より余計に幅を取っているみたい)

今回はPhpSpreadsheetのインストール方法と簡単な使い方を紹介しました。
また後日、より詳しい使い方を紹介します。

 

Contact

ご質問等ありましたら,お手数ですが弊社の個人情報保護方針をお読み頂いた上でフォームからお願い致します.
※このページと無関係な内容のセールスはご遠慮ください.

 
   
*は必ずご記入ください。
1. ご質問,アドバイス等ございましたらお書きください.
お客様情報
*メールアドレス
会社名
*御名前
※姓名間には空白をお願いします。
*電話番号
※"-"で区切ってください。
 上記項目にご記入頂き、「確認画面へ進む」ボタンを一回だけクリックしてください。
次回、お客様情報を入力しないで済むよう、暗号化してクッキーに記憶する。
contact
Pagetop