PhpSpreadsheet でエクセルの範囲に名前を定義する

2019年4月11日

はじめに

ユーザーにエクセルでデータを入力してもらい、それをアップロードすることでデータを登録できるシステムを作ることになりました。

入力項目が「法人」→「施設」→「区画」というように、紐付いたデータを入力してもらうために、ドロップメニューリストを設定する必要があり、リストの内容をエクセルの範囲に名前を定義することで引けるようにしました。

 

環境

PhpSpreadsheet: 1.6

 

使い方

基本的な使い方は以下になります。

use PhpOffice\PhpSpreadsheet\Reader\Xlsx AS Reader;
use PhpOffice\PhpSpreadsheet\NamedRange;
$Filepath = "template.xlsx";
$reader = new Reader();

// テンプレートのSpreadsheetを取得
// PhpOffice\PhpSpreadsheet\Spreadsheet
$spreadsheet = $reader->load($Filepath);

// Worksheetを選択
// PhpOffice\PhpSpreadsheet\Worksheet\Worksheet
$sheet = $spreadsheet->getSheet(1);

// 範囲の名前定義
$spreadsheet->addNamedRange(new NamedRange("Space_ParentFacility_1", $sheet, "D1:D2"));

 

解説

以下のドキュメントを参考にしました。

Define a named range-PhpSpredsheet

 

範囲に名前をつけるにはaddNamedRange()を使うことになります。

これにNamedRangeを引数で渡してやります。

 

PhpOffice\PhpSpreadsheet\NamedRange

NamedRange([範囲名], [WorkSheetインスタンス], [範囲]);

 

これで範囲に名前をを定義することができます。

 

まとめ

エクセルの範囲に名前を定義することで範囲内をグループ化することができます。

これでドロップメニューの対象を取得できます。

時間があればドロップメニューの設定方法も記事にしたいと思います。

 

それでは今日はこの辺で~

 

 

 

 

 

  • この記事を書いた人

カバノキ

印刷会社のWEB部隊に所属してます。 WEB制作に携わってから、もう時期10年になります。 普段の業務では、PHPをメインにサーバーサイドの言語を扱っています。 最近のお気に入りはJavascriptです。 Vue.jsを狂喜乱舞しながら、社内に布教中です。

-PHP
-, , ,