跳至主要內容

10 · 樣式與品牌化

情境

輸出的活頁簿要符合公司的品牌風格 — 工作表索引標籤顏色、字型、數值格式、合併的標題列等等。

直接在範本中編寫樣式

xl3 會完整保留範本的樣式。資料區塊會展開列,但每一個展開後的列都會繼承樣式化範本列的字型、填滿、框線、數值格式、對齊等等。資料區塊下方的頁尾列會維持原樣式,並隨區塊展開向下平移。

你不需要寫「樣式」指示子 — Excel 樣式就放在 template.xlsx 裡。

工作表 tabColor

在 Excel 中設定索引標籤顏色(在工作表索引標籤上按右鍵 → 索引標籤色彩)。xl3 會依 ADR-0032 #3 原樣保留。輸出工作表會繼承範本的索引標籤顏色。

數值格式與 TEXT()

控制數字顯示有兩種方法:

1. 範本儲存格的 numFmt 用 Excel 給範本儲存格設定格式,例如 #,##0.00[$NT$-zh-TW]#,##0。輸出儲存格會帶同樣的格式。

2. 表達式內的 TEXT() 強制把儲存格輸出為字串並指定格式:

{{ TEXT([金額], "$#,##0.00") }}
{{ TEXT([日期], "yyyy-mm-dd") }}
{{ TEXT([比率], "0.0%") }}

當你需要把格式化字串塞進串接時就用 TEXT(){{ "合計: " & TEXT(SUM([金額]), "$#,##0") }}

TEXT() 支援的格式遵守 Excel 核心格式表。核心表以外的格式依 ADR-0021 為實作定義。

合併儲存格

xl3 會保留範本中的合併:

  • 資料區塊上方的合併留在原處。
  • 資料區塊下方的合併會隨區塊展開向下平移。
  • 資料區塊的合併(同一個範本列裡的儲存格之間)會在每個展開後的列保留。

跨越資料區塊邊界的垂直合併依 ADR-0021 為實作定義 — 在跨實作的範本中請避免使用。

合併儲存格中的表頭:有支援

供應商範本(對帳單、採購單、結算單)常把表頭儲存格跨多欄合併,用一個標題標示一群欄位。從 0.5.0 開始,xl3 原生讀取這類設計(依 ADR-0033):水平合併的表頭會在合併主格形成一個邏輯欄位,同一列中的從屬儲存格則被視為透明。

範例:表頭列裡 B1:D1 = "品項"(跨 3 欄合併)、E1 = "數量",xl3 會把它讀成兩個來源欄位 品項數量品項 的資料從 B 欄讀;C、D 欄被略過,因為它們是 B 的合併從屬。

跨多列的表頭頻段(同時跨列與跨欄的二維合併)也能用 — 把 source_table 指到頻段的最後一列,讓資料從頻段下方立刻開始。例如對於 J11:M12 頻段,要用 source_table = J12:N(不是 J11:N,那會讓第 12 列被當成資料列、把合併主格的文字當成幽靈資料)。

如果來源真的有兩個同名欄位(不是因為合併),仍然會丟 xl3/source/duplicate-name。狹義化只對合併從屬有效。

列印設定

pageSetup(方向、邊距、列印區域)、views(縮放、凍結窗格)、defaultRowHeight 依 ADR-0032 #3 全部保留。在範本中設定一次,輸出就會繼承。

備註

  • 活頁簿屬性(佈景主題、定義名稱、列印區域)會原樣保留。範本設定一次,每份輸出都繼承。
  • 規格參考:ADR-0032「Niche limits and workbook pass-through behaviors」;spec/evaluation.md 的「Cell Evaluation」針對儲存格層級的樣式。