PhpSpreadsheetをインストールしてXLSX→PDF変換を試す
PHPを使ってExcelからPDF変換のベストプラクティスを探しているときの覚書。
環境: CentOS Stream 8, PHP 7.4.19
PHPでエクセルを編集するのはPhpSpreadsheetが最強。
- PhpSpreadsheet/samples at master · PHPOffice/PhpSpreadsheet · GitHub
- Welcome to PhpSpreadsheet's documentation - PhpSpreadsheet Documentation
サンプルコードはGitHub上のsampleディレクトリにある。
・・・けど、ドキュメントで十分だった。
composerを使ってインストールする。
$ composer require phpoffice/phpspreadsheet
例えばエクセルを読み込んで特定のセルに値を入れて保存する処理はこちら。
require 'vendor/autoload.php';use PhpOffice\PhpSpreadsheet\Writer\Xlsx;$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('input.xlsx');$sheet = $spreadsheet->getActiveSheet();$sheet->setCellValue('I3', 'テスト');$writer = new Xlsx($spreadsheet);$writer->save('output.xlsx');
元よりファイルサイズが小さくなっているのが気になるけど問題なく出力できた。
TCPDFを使う場合はcomposerでインストールするだけでOK。
$ composer search tcpdf
$ composer require tecnickcom/tcpdf
PDF変換をするサンプルコードはこちら。
require 'vendor/autoload.php';use PhpOffice\PhpSpreadsheet\Writer\Xlsx;$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('input.xlsx');$sheet = $spreadsheet->getActiveSheet();$sheet->setCellValue('I3', 'テスト');$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Tcpdf');$writer->setFont('kozgopromedium');$writer->save('output.pdf');
フォントはvendor/tecnickcom/tcpdf/fontsのファイル名。
kozgopromedium: KozGoPro-Medium-Acro(小塚ゴシック Pro)
PDF変換は成功したが見事にレイアウトが崩れている。
次は外部APIを使ったPDF変換を試す予定。