PHPでExcelファイルとしてダウンロードしたい(PhpSpreadsheet)
「phpEXCEL」ってヤツは非推奨となり、現在だと「phpoffice/phpspreadsheet」ってのを使うのが良いらしい。
作成日:2020-07-20, 更新日:2020-07-20
インストから単純な出力まで
・composerのインスト
・composerで「phpspreadsheet」をインスト
・実行(「Hello World」をExcelファイルに出力)
※Gitからダウンロードして使おうとしたけど、挫折。素直にcomposerでインスト。
composerのインスト
1.composerのサイトからダウンロード
2.実行
composerで「phpspreadsheet」をインスト
※Win(Xampp)の場合、CMDで実行(PowerShellだとエラーになる・・・と思う)。
composer require phpoffice/phpspreadsheet
▼ドキュメント、サンプルも必要なとき(未調査)
composer require phpoffice/phpspreadsheet --prefer-source
実行(「Hello World」をExcelファイルに出力)
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('A1', 'Hello World !'); $writer = new Xlsx($spreadsheet); $writer->save('hello world.xlsx');
「セルA1」に「Hello World !」と記載された「hello world.xlsx」というファイル名のExcelファイル出力される
サーバにupしたExcelファイルを雛形にする
▼やりたいこと
1.サーバにExcelファイルをupしておくので、雛形として使いたい
2.「1」の任意のシート・セルに値をセット
3.任意の場所に別名保存(出力)
▼ひとまず「Hello World」で出力されたファイルを雛形にしてみる
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxWriter; use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader; if ( !defined('DS') ) { define('DS', DIRECTORY_SEPARATOR); } // upしたExcelファイルのPATH、対象にするシート、出力先のPATH $use_file_path = __DIR__.DS.'hello world.xlsx'; $use_excel_sheed = 'Worksheet'; $output_file_path = __DIR__.DS.'rewrite.xlsx'; // Excelファイルの読み込み $filePath = $use_file_path; $reader = new XlsxReader(); $excel = $reader->load($filePath); // シートの指定 $sheet = $excel->getSheetByName($use_excel_sheed); // セルに値を追加 $sheet->setCellValue('A2', 'ほげほげ'); $sheet->setCellValue('A3', 'hoge'); // サーバに出力 $writer = new XlsxWriter($excel); $writer->save($output_file_path);
ダウンロードする
▼出力させるトコを下記に変更
$dl_file_name = 'dl_hello_world.xlsx'; header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;'); header('Content-Disposition: attachment; filename="'.$dl_file_name.'"'); header('Cache-Control: max-age=0'); $writer = new XlsxWriter($excel); $writer->save('php://output'); exit;
Gitや資料
・PHPOffice / PhpSpreadsheet
・official documentation
・API documentation