横浜のITサポート・WEB制作会社

Webサイト制作

WordPressの使い方を知りたい!

Windows

パソコンのトラブル解決方法を知りたい!

Office365

Office365でできることを知りたい!

アプリ

便利なアプリを知りたい!

h

すべての記事

人気記事TOP15

タグ一覧

会社情報

採用情報

お問い合わせ

ITサポートスタッフ募集中です。詳しくはこちらから!

PhpSpreadsheetでテンプレートをコピーして書き込みし別名で保存する方法

2023/03/28 | PHP, WEB

こんにちは。

弊社ではホームページの制作や保守・管理などのサービスを行っています。

その中で先日、PHPでExcelファイルの読み書きをともなう対応を行いました。

そこで「PhpSpreadsheet」を使ったので、今回はその使い方の一例として、テンプレートとなるExcelファイルをコピーして書き込みを行い、別名で保存する方法をご紹介したいと思います。

PhpSpreadsheetとは

PhpSpreadsheetはPHPのライブラリで、Excelなどの表計算ファイルを読み書きするための機能を提供しています。

PhpSpreadsheetのインストール

今回はMAMPで構築したローカル環境に「phpexcel」ディレクトリを用意して、そこにインストールします。

phpexcel %

「phpexcel」配下にPhpSpreadsheetをインストールするディレクトリとして「lib」を作成します。

phpexcel % mkdir lib

作成した「lib」ディレクトリに移動します。

phpexcel % cd lib
lib %

Composerを使ってPhpSpreadsheetをインストールします。

lib % composer require phpoffice/phpspreadsheet

Composerはそのプログラムで使われるライブラリを管理するためのツールです。

使うライブラリを指定するとそれらを一括インストールすることができます。

インストールが完了すると、「lib」配下に次のとおり「vendor」ディレクトリと「composer.json」、「composer.lock」ファイルが作成されます。

composer.jsonにはインストールしたライブラリ(PhpSpreadsheet)とそのバージョンが記載されています。

テンプレートファイルとPHPプログラムの作成

「phpexcel」配下にPhpSpreadsheetを使ったプログラムを書く「index.php」とExcelのテンプレートファイルとして「テンプレートファイル.xlsx」を作成します。

「テンプレートファイル.xlsx」は「A1」セルに次のとおりテキストを入力しておきます。

「index.php」の内容は次のとおりです。

<?php

// インストールしたものを読み込み
require 'lib/vendor/autoload.php';

// ファイル名
$temp_file = 'テンプレートファイル.xlsx';
$gen_file = '生成されたファイル.xlsx';

// 書き込み内容
$input_contents = array(
	"A1" => "新しく生成されたファイル。",
	"B2" => "ここはB2です。",
	"C3" => "ここはC3です。",
	"D4" => "ここはD4です。",
	"E5" => "ここはE5です。",
	"F6" => "ここはF6です。",
	"G7" => "ここはG7です。",
);

// テンプレートファイルを読み込み
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($temp_file);
$worksheet = $spreadsheet->getActiveSheet();

// 書き込み
foreach ($input_contents as $cell => $content) {
	$worksheet->getCell($cell)->setValue($content);
}

// 別名で保存
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save($gen_file);

テンプレートのExcelファイルを読み込んでテキストの上書きと書き込みを行い、それを別名で新規保存します。

PhpSpreadsheetを含んだPHPプログラムの実行

上記の「index.php」をブラウザアクセスで実行してみます。

エラーがあったときのことを考えると詳細を確認できるコマンド実行がおすすめです。

Excelファイルの確認

PhpSpreadsheetが正常終了すると、「phpexcel」配下に以下のとおり「生成されたファイル.xlsx」が作成されます。

「生成されたファイル.xlsx」には「index.php」で定義した$input_contentsの値が記載されています。

まとめ

以上が「PhpSpreadsheet」でテンプレートとなるExcelファイルをコピーして書き込みを行い、別名で保存する方法の一例です。

PhpSpreadsheetの公式サイトには、事例別に使い方のサンプルが多く記載されているので、そちらもご覧いただくのがおすすです。

ITサポート・ホームページ制作はお任せください

  • パソコンの動作が遅い・重いと感じる
  • パソコンやスマートフォン、複合機などIT機器を新しく入れ替えたい
  • システム化・クラウド化など業務のIT化・DX化を考えている
  • ホームページを新しく作りたい
  • 古くなったホームページを修正をしてほしい

上記の様なお悩みがありましたらぜひ弊社までお気軽にお問い合わせください!