04 · 每個群組產出一個檔案
情境
你已經有續約報表,但希望按地區拆成多個 .xlsx,而不是一個大檔案。操作員可以把各地區的檔案直接交給該地區的團隊。
__config__
| 鍵 | 值 |
|---|---|
source_sheet | 原始 |
source_table | 1 |
output_file_pattern | {{ [地區] }}.xlsx |
群組鍵就是你在 output_file_pattern 裡參照的內容。xl3 會用解析後的 pattern 值對來源列分組,每個不同值就產出一個檔案。
原始資料(工作表 原始)
| 客戶 | 地區 | 續約金額 |
|---|---|---|
| 台灣物流 | 台北 | 18400 |
| 高雄貝塔 | 高雄 | 7200 |
| 核心食品 | 台北 | 25100 |
結果
兩個檔案:
台北.xlsx— 包含台灣物流與核心食品的列。高雄.xlsx— 包含高雄貝塔。
多鍵檔案分組
output_file_pattern = {{ [地區] }}-{{ [等級] }}.xlsx
群組鍵變成 (地區, 等級) 元組。不同的元組 → 不同的檔案。台北-A.xlsx、台北-B.xlsx、高雄-A.xlsx …。
檔名清洗規則
xl3 依 ADR-0002 清洗檔名:禁用字元 / \ : * ? " < > |(外加控制字元)每個都以 _ 一對一替換,接著清掉開頭的空白與結尾的點、空白。連續的 _ 不會合併。如果兩個不同的群組值清洗後落到同一個檔名 — 例如 台北/台灣 和 台北:台灣 都變成 台北_台灣.xlsx(每個禁用字元各換成一個 _) — xl3 會依 ADR-0031 丟 xl3/filename/collision,而非默默覆蓋。
空白群組鍵
如果某列在群組鍵欄位為空,xl3 會依 Excel 樞紐分析表的慣例(ADR-0026)替換為字面值 (blank)。該檔案會落到 (blank).xlsx。
備註
- 檔案順序為「首次出現」(ADR-0016) — 也就是該列在來源中出現的順序。
- 若想按地區拆成同一份檔案中的多個工作表,請看 食譜 05。