PHP等のプログラミングから、CSVファイルに出力する方法はよく見かけますが、今回はPHPでExcelファイルを作成する方法をご紹介します。
ここでは、PhpSpreadsheet(スプレッドシート)を利用したExcelファイルの基本的な使い方と、作成したExcelファイルのダウンロード方法について説明します。
PhpSpreadsheetのインストールと読み込み
昔は、PhpExcelなるものがあったそうですが、どうよやら古くてサポート切れなようで、現在ではPhpSpreadsheetが主流だそうです。

PhpSpreadsheetはPHPバージョン7.4以降にも対応しており、読み書きは.xls、.xlsxのどちらにも対応。
さらに、PDFにも出力できる優れものです!
詳しくは、PhpSpreadsheet公式サイトのマニュアルをご覧ください。
PhpSpreadsheetのインストール
ここでは、PHPライブラリ管理ツールのComposerを使用してPhpSpreadsheetライブラリをインストールしますので、まだComposerを導入していない方はこちらからインストールしてください。
それでは式サイトに従って、composerコマンドでPhpSpreadsheetをインストールします。
| 
 1  | 
composer require phpoffice/phpspreadsheet  | 
もちろん、GitHubでも公開されています。
PhpSpreadsheetの読み込み
PHPファイルの先頭で、先程インストールしたPhpSpreadsheetライブラリの読み込みと、use演算子でインポートしておきます。
| 
 1 2 3 4 5  | 
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx;  | 
PhpSpreadsheetの基本的な使い方
PhpSpreadsheetの基本的な使い方については、公式サイトや他の技術系サイトでも紹介されていますので、ここでは、特定のセルへの書き込みと、新規シートを作成、Excelファイルの保存までの流れを説明します。
- 特定のセルに値を入力する
 - 新規シートを作成する
 - Excelファイルに書き出す
 
特定のセルに文字列を入力する
まずはExcelファイルを作成し、最初のシートを取得してシート名を設定。
それから、A1のセルに「Hello World !」の文字を入力します。
| 
 1 2 3 4  | 
$spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setTitle('Sheet 1'); $sheet->setCellValue('A1', 'Hello World !');  | 
新規シートを作成する
次に、新規でシートを作成します。
ですが、通常のExcelと同じように、すでに存在するシート名は使用できないので、作成する前に新しく追加するシート名が存在しないことを確認してから作成します。
| 
 1 2 3 4  | 
if ($spreadsheet->getSheetbyName('Sheet 2') == false) {     $sheet->createSheet();     $sheet->setTitle('Sheet 2'); }  | 
Excelファイルに書き出す
最後に、書き込んで保存したらExcelファイルの完成です!
| 
 1 2  | 
$writer = new Xlsx($spreadsheet); $writer->save('hello world.xlsx');  | 
他にも、通常のExcelでも使用する機能がたくさんありますので、もっと詳しく知りたい方は、公式サイトや検索してみてください!

Excelファイルのダウンロード
ここからは、PhpSpreadsheetとは直接関係ないですが、上記で作成したExcelファイルをPHPのheader()関数を使って、作成後に自動的にダウンロードできるようにしたいと思います。
| 
 1 2 3 4 5  | 
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;'); header('Content-Disposition: attachment; filename="'.$file_name.'"'); header('Cache-Control: max-age=0'); $writer = new Xlsx($excel); $writer->save('php://output');  | 
【まとめ】PhpSpreadsheetでExcelファイル作成
今回説明したPHPのソースコードをまとめました!
| 
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25  | 
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setTitle('Sheet 1'); $sheet->setCellValue('A1', 'Hello World !'); if ($spreadsheet->getSheetbyName('Sheet 2') == false) {     $sheet->createSheet();     $sheet->setTitle('Sheet 2'); } $writer = new Xlsx($spreadsheet); $writer->save('hello world.xlsx'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;'); header('Content-Disposition: attachment; filename="'.$file_name.'"'); header('Cache-Control: max-age=0'); $writer = new Xlsx($excel); $writer->save('php://output'); exit;  | 
以上です!
中のロジックさえ変えれば、いくらでも使い回しできますね。


	
コメント