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をインストールします。
composer require phpoffice/phpspreadsheet
もちろん、GitHubでも公開されています。
PhpSpreadsheetの読み込み
PHPファイルの先頭で、先程インストールしたPhpSpreadsheetライブラリの読み込みと、use演算子でインポートしておきます。
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
PhpSpreadsheetの基本的な使い方
PhpSpreadsheetの基本的な使い方については、公式サイトや他の技術系サイトでも紹介されていますので、ここでは、特定のセルへの書き込みと、新規シートを作成、Excelファイルの保存までの流れを説明します。
- 特定のセルに値を入力する
- 新規シートを作成する
- Excelファイルに書き出す
特定のセルに文字列を入力する
まずはExcelファイルを作成し、最初のシートを取得してシート名を設定。
それから、A1のセルに「Hello World !」の文字を入力します。
$spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setTitle('Sheet 1'); $sheet->setCellValue('A1', 'Hello World !');
新規シートを作成する
次に、新規でシートを作成します。
ですが、通常のExcelと同じように、すでに存在するシート名は使用できないので、作成する前に新しく追加するシート名が存在しないことを確認してから作成します。
if ($spreadsheet->getSheetbyName('Sheet 2') == false) { $sheet->createSheet(); $sheet->setTitle('Sheet 2'); }
Excelファイルに書き出す
最後に、書き込んで保存したらExcelファイルの完成です!
$writer = new Xlsx($spreadsheet); $writer->save('hello world.xlsx');
他にも、通常のExcelでも使用する機能がたくさんありますので、もっと詳しく知りたい方は、公式サイトや検索してみてください!
Excelファイルのダウンロード
ここからは、PhpSpreadsheetとは直接関係ないですが、上記で作成したExcelファイルをPHPのheader()
関数を使って、作成後に自動的にダウンロードできるようにしたいと思います。
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のソースコードをまとめました!
<?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;
以上です!
中のロジックさえ変えれば、いくらでも使い回しできますね。
- Original:https://minory.org/php-spreadsheet.html
- Source:Minory
- Author:管理者