🔖
PhpSpreadSheetを使って10分でとりあえずExcel入出力してみる
はじめに
PHPのシステム開発で、Excel出力の機能を入れることになったのでPhpSpreadSheetを使うことにしました。
まずはとにかく最小限の手間で実際に動くところまでやってみよう、ということで、雑に以下を試したら10分でできたので共有します。
これから同じようにやってみようとしてた人の参考になれば幸いです。
- テンプレートのExcelを用意する
- ライブラリのインストール
- コードの記述
環境
- MacBook Pro (15-inch, 2019)
- MacOS Mojave 10.14.6(18G1012)
- php 7.2.22 (cli)
参考にさせていただいたページ
[1] PhpSpreadsheetの使い方
[2] [mac]php composerのインストール方法
1.テンプレートのExcelを用意する
以下のページから適当なファイルを調達しました。
アンケート用紙のテンプレートです。
シート1は説明用なので削除しました。
- アンケート用紙 - 無料テンプレート公開中 - 楽しもう Office https://www.microsoft.com/ja-jp/office/pipc/template/result.aspx?id=13943
こんな感じで excel_templatesというディレクトリを作成して入れました
2.ライブラリのインストール
ターミナルで以下を実行します
composer require phpoffice/phpspreadsheet
composerが入っていない方は参考の[2]のサイトをご覧になってみてください。私はそれを参考にしました。
3.コードの記述
前のセクションでDLしたアンケート用紙のExcelの一番下(B36)に日付と時刻を入れるコードを記述します
<?php
require_once "vendor/autoload.php";
use PhpOffice\PhpSpreadsheet\Reader\Xlsx as Reader;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as Writer;
$reader = new Reader;
$file_name = 'excel_templates/24316_questionnaire_paper.xlsx';
$spreadsheet = $reader->load($file_name);
$sheet = $spreadsheet->getActiveSheet();
date_default_timezone_set('Asia/Tokyo');
$sheet->getCell( 'B36' )->setValue( date("Y/m/d H:i:s") );
$writer = new Writer($spreadsheet);
$outputPath = 'output.xlsx';
$writer->save( $outputPath );
?>
実行結果
一番下に日付と時刻が入力されたExcelファイルが出力されました。
24316_questionnaire_paper.xlsx | output.xlsx |
---|---|
Discussion