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; |
以上です!
中のロジックさえ変えれば、いくらでも使い回しできますね。
コメント