你手上有一份记录客户续约的 .xlsx 文件。你希望在保留行结构的同时,生成一份只有一张工作表的报表,并在其中追加一个由续约金额推导出的"等级"列。
__config__
| 键 | 值 |
|---|
source_sheet | 原始 |
source_table | 1 |
output_file_pattern | 续约报表.xlsx |
模板单元格(工作表 报表)
| 单元格 | 值 |
|---|
| A1 | 客户 |
| B1 | 区域 |
| C1 | 续约金额 |
| D1 | 等级 |
| A2 | {{ [客户] }} |
| B2 | {{ [区域] }} |
| C2 | {{ [续约金额] }} |
| D2 | {{ IF([续约金额] > 10000, "优先", "普通") }} |
源数据(工作表 原始)
| 客户 | 区域 | 续约金额 |
|---|
| 北京物流 | 北京 | 18400 |
| 上海贝塔工程 | 上海 | 7200 |
| 核源食品 | 北京 | 25100 |
输出(续约报表.xlsx,工作表 报表)
| 客户 | 区域 | 续约金额 | 等级 |
|---|
| 北京物流 | 北京 | 18400 | 优先 |
| 上海贝塔工程 | 上海 | 7200 | 普通 |
| 核源食品 | 北京 | 25100 | 优先 |
- 模板的第 2 行就是数据块。xl3 会把源中的一行展开成输出中的一行,并把模板行上的样式、数字格式、合并单元格原样保留下来。
[客户] 是一个列引用——xl3 会把它解析为当前源行的 客户 列的值。
{{ ... }} 是一个模板块——大括号里的内容会被当作 XTL 表达式求值。大括号内的空白不影响结果。
- 数据块会在第一行非空且不包含模板块的行处停止。加一行页脚(例如包含"合计"的单元格),数据块就只在它上方展开,而页脚行保持原位不动。
另见:spec/language.md 中的 "Template Blocks" 与 "Source Columns"。