如何使用OpenTBS插件创建重复格式块?TBS Word模板制作遇阻
用OpenTBS(TinyButStrong)实现Word文档分组重复行与格式块
一、按活动标题分组生成目标格式行
先把数据整理成嵌套或已排序的结构,以PHP数组为例:
// 方案1:嵌套分组结构(直观易维护) $grouped_data = [ [ 'title' => '活动A', 'items' => [ ['name' => '项目1', 'val' => 'XXX'], ['name' => '项目2', 'val' => 'YYY'] ] ], [ 'title' => '活动B', 'items' => [['name' => '项目1', 'val' => 'ZZZ']] ] ]; // 方案2:已按活动标题排序的扁平化数据 $flat_data = [ ['act_title' => '活动A', 'item_name' => '项目1', 'item_val' => 'XXX'], ['act_title' => '活动A', 'item_name' => '项目2', 'item_val' => 'YYY'], ['act_title' => '活动B', 'item_name' => '项目1', 'item_val' => 'ZZZ'], ];
Word模板设置
针对嵌套分组结构:
- 活动标题段落:输入
**[activities.title]**,并在段落开头添加块标签[activities;block=p](表示每个活动作为独立段落块重复) - 活动下的项目段落:每个项目行写
- [activities.items.name]:[activities.items.val],段落开头添加嵌套块标签[activities.items;block=p]
针对扁平化数据:
- 活动标题部分:用
when属性跳过重复标题,模板代码为:[flat_data;block=begin;when [act_title] != [act_title_prev]]**[act_title]**[flat_data;block=end] - 项目行:写
[flat_data;block=p]- [item_name]:[item_val](必须确保数据已按活动标题排序)
代码处理示例
require_once('tbs_class.php'); require_once('opentbs.php'); $TBS = new clsTinyButStrong; $TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN); $TBS->LoadTemplate('你的模板文件.docx'); // 嵌套结构用这个 $TBS->MergeBlock('activities', $grouped_data); // 扁平化结构用这个 // $TBS->MergeBlock('flat_data', $flat_data); // 导出下载文件 $TBS->Show(OPENTBS_DOWNLOAD, '最终文档.docx');
二、OpenTBS创建重复格式块的通用方法
重复块可用于表格行、段落、图片、文本框等几乎所有Word元素,核心是给目标元素添加block标签:
1. 表格行重复
在需要重复的表格行的任意单元格内添加[table_data;block=tr],行内字段用[table_data.field],模板示例:
| 项目名称 | 数值 |
|---|---|
| [table_data.name] | [table_data.val] |
对应代码:
$table_data = [['name'=>'项目1','val'=>'XXX'], ['name'=>'项目2','val'=>'YYY']]; $TBS->MergeBlock('table_data', $table_data);
2. 文本段落/列表重复
给每个要重复的段落开头添加[list_data;block=p],段落内容按需求写格式,比如:[list_data;block=p]- 项目:[list_data.name],数值:[list_data.val]
3. 嵌套重复块
就是分组场景的用法,父块包含子块,数据用嵌套数组,模板中子块标签要继承父块名称(比如[activities.items;block=p])
关键注意事项
- 开启Word的「显示/隐藏编辑标记」(快捷键Ctrl+*),确保TBS标签没有被Word的格式代码拆分
- 编辑.docx模板必须用Word,不要用文本编辑器,避免破坏格式结构
- 重复块的
block参数要对应元素类型:表格行用tr,段落用p,文本框用txbx,图片用pic
内容的提问来源于stack exchange,提问作者ura remon
相关产品推荐
相关产品推荐

