PHPでExcelシートを出力する方法(PhpSpreadsheet)
2024/03/13
PHPでエクセルシートを出力させたい。以前はPHPExcelを利用していたが現在は非推奨らしく後継のPhpSpreadsheetというライブラリを使うのが良いとのこと。以下に導入方法と使用方法をメモ。
公式サイト
https://phpspreadsheet.readthedocs.io/en/latest/
PhpSpreadsheetのインストール
今回のサーバはcomposerをインストールしていなかったのでそこからスタート。尚、CentOS7とPHP7.4の環境で作業した。適当なディレクトリを作成、移動し以下でインストールする。
#composerのインストール curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer #バージョン確認 composer --version #以下のような表示になればOK #Composer version 2.3.3 2022-04-01 22:15:35 #必要なライブラリをインストール yum --enablerepo=emi,remi-php74 install -y php-xml php-gd php-mbstring php-zip #phpSpreadsheetをインストール composer require phpoffice/phpspreadsheet
ソースコード
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Reader\Xls as XlsReader; use PhpOffice\PhpSpreadsheet\Reader\Xlsx as Reader; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Style\NumberFormat; use PhpOffice\PhpSpreadsheet\Style\Border; use PhpOffice\PhpSpreadsheet\Style\Alignment; use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; //スプレッドシートを作成 $spreadsheet = new Spreadsheet(); //シート作成 $spreadsheet->getActiveSheet('sheet1')->UnFreezePane(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setTitle("シート名"); //タイトルを設定 $sheet->setCellValue('A1', '名前'); $sheet->setCellValue('B1', '年齢'); //値を設定 $data = array( 0 => array('山田', 20,), 1 => array('鈴木', 30,), 2 => array('佐藤', 40,), 3 => array('田中', 50,), 4 => array('藤井', 60,), ); $sheet->fromArray($data, NULL, 'A2', true); //バッファをクリア ob_end_clean(); //ファイル名 $fileName = "test.xlsx"; //ダウンロード header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="'.$fileName.'"'); header('Cache-Control: max-age=0'); header('Cache-Control: max-age=1'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); header('Cache-Control: cache, must-revalidate'); header('Pragma: public'); $writer = new Xlsx($spreadsheet); $writer->save('php://output'); exit(); ?>
所感
ちょっとしたエクセル作成なら簡単にできそう。あまり凝ったことはしないのであれば十分使えるかと。
参考サイト
https://wiblok.com/blog/spreadsheet/
関連記事
-
PHPのHTTPクライアント用ライブラリ「Guzzle」の利用方法
以前に「Requests for PHP」を試したが、似たようなライブラリで「G ...
-
Composer無し&ファイル1枚でPHPのエラーメッセージ画面をリッチにするライブラリ「PHP Error」の利用方法
先日PHPのエラーメッセージを見やすくするwhoopsの利用方法をメモしたが導入 ...
-
PHPで配列を確認する際にvar_dumpよりも見やすくなるdBug.phpの利用方法
PHPで配列を確認する際、大抵var_dumpで出力させているがこれが見づらい。 ...
-
PHPでJavaScriptを圧縮するライブラリ「JShrink」の利用方法
サイト内でJavaScriptを用いる場合、外部のライブラリやプラグインだと圧縮 ...
-
PHPでGoogle翻訳を手軽に扱えるライブラリ「google-translate-php」の利用方法
サイト内で一部テキストのGoogle翻訳を行いたい。ただ、Google Clou ...