目次
はじめに
ユーザーにエクセルでデータを入力してもらい、それをアップロードすることでデータを登録できるシステムを作ることになりました。
入力項目が「法人」→「施設」→「区画」というように、紐付いたデータを入力してもらうために、ドロップメニューリストを設定する必要があり、リストの内容をエクセルの範囲に名前を定義することで引けるようにしました。
環境
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インスタンス], [範囲]);
これで範囲に名前をを定義することができます。

まとめ
エクセルの範囲に名前を定義することで範囲内をグループ化することができます。
これでドロップメニューの対象を取得できます。
時間があればドロップメニューの設定方法も記事にしたいと思います。
それでは今日はこの辺で~