【PHP】Excelファイル(.xlsx)に出力する方法

【PHP】Excelファイル(.xlsx)に出力する方法 PHP

PHPでExcelファイル(.xlsx形式)を生成したい場面は、帳票出力やデータエクスポート機能など、実務でよくあります。この記事では、人気のあるライブラリ PhpSpreadsheet を使用して、Excelファイルを出力する方法をご紹介します。

PhpSpreadsheetとは?

PhpSpreadsheet は、PHPでExcelやCSVなどのスプレッドシート形式を簡単に扱えるライブラリです。以前使われていた「PHPExcel」の後継ライブラリとして、よりモダンな構成になっています。

ライブラリのインストール

まずはComposerでPhpSpreadsheetをインストールしましょう。

composer require phpoffice/phpspreadsheet

composer.jsonが存在するプロジェクトで上記のコマンドを実行すると、必要なライブラリがインストールされます。

Excelファイルを生成してダウンロードさせる方法

以下は、Excelファイルを生成して、そのままブラウザからダウンロードさせるPHPコードの例です。

<?php
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

$sheet->setCellValue('A1', '名前');
$sheet->setCellValue('B1', '年齢');
$sheet->setCellValue('A2', '山田太郎');
$sheet->setCellValue('B2', '28');

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="sample.xlsx"');
header('Cache-Control: max-age=0');

$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;

上記コードをブラウザ経由で実行すると、「sample.xlsx」という名前でExcelファイルがダウンロードされます。

サーバーに保存する場合

ブラウザにダウンロードさせるのではなく、サーバー上にファイルを保存することも可能です。

$writer = new Xlsx($spreadsheet);
$writer->save('output/sample.xlsx');

output フォルダなど、書き込み権限のあるパスを指定してください。

まとめ

PhpSpreadsheetを使えば、PHPで簡単にExcelファイルを出力することができます。業務アプリケーションや管理システムなどでのデータ出力処理に非常に便利です。

今後は、以下のような応用も試してみると良いでしょう。

  • 配列から動的に行を生成
  • スタイルや罫線の設定
  • シートの複数作成
  • 画像挿入や数式の設定