サイトアイコン IT NEWS

PHPでExcel(Spreadsheet)ファイルを作成する方法

PHP等のプログラミングから、CSVファイルに出力する方法はよく見かけますが、今回はPHPExcelファイルを作成する方法をご紹介します。
ここでは、PhpSpreadsheetスプレッドシート)を利用したExcelファイルの基本的な使い方と、作成したExcelファイルのダウンロード方法について説明します。

PhpSpreadsheetのインストールと読み込み

昔は、PhpExcelなるものがあったそうですが、どうよやら古くてサポート切れなようで、現在ではPhpSpreadsheetが主流だそうです。

PhpSpreadsheetPHPバージョン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ファイルの保存までの流れを説明します。

今回の目標
  1. 特定のセルに値を入力する
  2. 新規シートを作成する
  3. 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ファイルをPHPheader()関数を使って、作成後に自動的にダウンロードできるようにしたいと思います。

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;

以上です!
中のロジックさえ変えれば、いくらでも使い回しできますね。

著:大重 美幸
¥3,344 (2022/12/11 23:02時点 | Amazon調べ)

モバイルバージョンを終了