10 · 样式与品牌化
场景
输出工作簿要符合公司品牌——工作表标签颜色、字体选择、数字格式、合并的标题行等。
直接在模板中编辑样式
xl3 会保留模板的全部样式。数据块会展开行,但每条渲染出的行都会继承样式化模板行的字体、填充、边框、数字格式、对齐方式等。数据块下方的页脚行也保留各自样式,并随着数据块展开向下移动。
不需要写"样式"指令——Excel 样式就放在模板 .xlsx 里。
工作表 tabColor
在 Excel 中设置标签颜色(右键点击标签 → 标签颜色)。xl3 按 ADR-0032 #3 原样保留。输出工作表保留模板的标签颜色。
数字格式与 TEXT()
控制数字渲染外观的两种方式:
1. 给模板单元格设置 numFmt。 把模板单元格的数字格式设为 #,##0.00 或 [$¥-zh-CN]#,##0。渲染出的单元格会带上同样的格式。
2. 在表达式中用 TEXT()。 强制写出一个字符串型单元格,按你想要的格式输出:
{{ TEXT([金额], "$#,##0.00") }}
{{ TEXT([日期], "yyyy-mm-dd") }}
{{ TEXT([比率], "0.0%") }}
需要把格式化后的字符串放进拼接里时使用 TEXT():{{ "合计:" & TEXT(SUM([金额]), "$#,##0") }}。
TEXT() 支持的格式遵循核心 Excel 格式表。核心表之外的格式按 ADR-0021 属于实现自定义。
合并单元格
xl3 会保留模板中的合并:
- 数据块上方的合并位置不变。
- 数据块下方的合并随数据块展开而下移。
- 数据块内部(横跨同一模板行的若干列)的合并在每条渲染行上都保留。
跨越数据块边界的纵向合并按 ADR-0021 属于实现自定义——便于跨实现移植的模板请避免这种用法。
合并单元格里的表头:支持
供应商模板(对账单、采购订单、结算单)经常把表头单元格横向合并为多列,为一组字段加一个大标题。xl3 自 0.5.0 起原生支持(按 ADR-0033):横向合并的表头形成一个逻辑列,位置在合并的主单元格上 ;同一行的从单元格透明化。
举例:表头行 B1:D1 = "品类"(横跨 3 列合并)和 E1 = "数量",会被读成两个源列:品类 与 数量。品类 的数据从 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" 中关于单元格级样式的部分。