PHP で、EXCEL を操作してみる 2

Yossy
2023-01-26
2023-01-26
1.概要

前回、簡単なサンプルを書いてみたので、今回は、拡張して請求書を EXCEL で出力してみたいと思います。
大きな流れとしては、

(1) EXCEL の請求書雛形を作成
(2) PhpSpreadsheet で、請求書雛形を読み込む
(3) 読み込んだ、請求書雛形に値を設定
(4) 請求書として保存する

としたいと思います。

2.まず、EXCEL の請求書雛形を作成

雛形になる EXCEL には、書式や計算式などを入れておくことができます。

0010-1


3.実際の処理

以下のようなコードになりました。



require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

/* 請求書の雛形を読み込みます */
$inputFileName = './請求書雛形.xlsx';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);

/* フォーマット */
$sheet = $spreadsheet->getSheetByName('請求書');

/* 請求日付セット */
$sheet->setCellValue('H2', date('Y-m-d'));

/* 宛先セット */
$sheet->setCellValue('C6', '〒 600-8815');
$sheet->setCellValue('C7', '京都府京都市下京区中堂寺粟田町91番地 ');
$sheet->setCellValue('C8', '京都リサーチパーク9号館7階');
$sheet->setCellValue('C9', '株式会社フューチャースピリッツ 御中');

/* 明細情報 */
$sheet->setCellValue('B12', 'FutureWeb Pro M1 初期費用');
$sheet->setCellValue('F12', 1);
$sheet->setCellValue('G12', 98000);

$sheet->setCellValue('B13', 'FutureWeb Pro M1 月額費用');
$sheet->setCellValue('F13', 1);
$sheet->setCellValue('G13', 55000);


/* ファイルに出力 */
$writer = new Xlsx($spreadsheet);
$writer->save('請求書.xlsx');


こんな感じです。

コードを実行すると、`請求書.xlsx` というファイルができます。中身は、こんな感じになります。

0020-1

プログラムで指定した通りに、`請求書.xlsx` に値が設定されているのが確認できました。