メインコンテンツへスキップ

04 · グループごとにファイルを分ける

シナリオ

更新レポートを 1 つの大きなファイルではなく、地域別に .xlsx を 1 つずつ出力したいとします。運用チームは各地域のファイルをその地域の担当者にそのまま渡せます。

__config__

キー
source_sheet元データ
source_table1
output_file_pattern{{ [地域] }}.xlsx

グループキーは output_file_pattern で参照した値です。xl3 はそのパターンの評価結果を基準にソース行をグループ化し、異なる値ごとにファイルを 1 つずつ生成します。

元データ(シート 元データ)

取引先地域更新金額
アクメ東京18400
ベータ大阪7200
コレオン東京25100

結果

2 つのファイル:

  • 東京.xlsx ― アクメとコレオンの行が入ります。
  • 大阪.xlsx ― ベータが入ります。

複数キーでのグループ化

output_file_pattern = {{ [地域] }}-{{ [ランク] }}.xlsx

グループキーがタプル (地域, ランク) になります。異なるタプルごとに別ファイルが作られます ― 東京-A.xlsx東京-B.xlsx大阪-A.xlsx のように。

ファイル名のサニタイズ

xl3 は ADR-0002 に従ってファイル名をサニタイズします ― / \ : * ? " < > | に含まれる禁止文字と制御文字は、それぞれ _ 1 つに 1:1 で置換され、先頭の空白と末尾のドット・空白は切り取られます。連続した _ は結合されません。異なる 2 つのグループ値が同じファイル名にサニタイズされる場合 ― 例えば 東京/日本東京:日本 の両方が 東京_日本.xlsx になる場合(禁止文字 1 つにつき _ 1 つ) ― xl3 は ADR-0031 に従って黙って上書きする代わりに xl3/filename/collision エラーを投げます。

グループキーが空のとき

行のグループキー値が空のとき、xl3 は ADR-0026 に従って Excel ピボットの慣例である (blank) リテラルに置き換えます。該当行は (blank).xlsx に入ります。

メモ

  • ファイル順序は ADR-0016 に従い、ソースで最初に登場した順序を踏襲します。
  • 1 ファイル内で地域別シートに分けるシート単位のグループ化は Recipe 05 を参照してください。