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