PhpSpreadSheetを使って10分でとりあえずExcel入出力してみる

2 min read読了の目安(約1900字

はじめに

PHPのシステム開発で、Excel出力の機能を入れることになったのでPhpSpreadSheetを使うことにしました。

まずはとにかく最小限の手間で実際に動くところまでやってみよう、ということで、雑に以下を試したら10分でできたので共有します。
これから同じようにやってみようとしてた人の参考になれば幸いです。

  1. テンプレートのExcelを用意する
  2. ライブラリのインストール
  3. コードの記述

環境

  • 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は説明用なので削除しました。

こんな感じで 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