既然是模板就少不了各种标记和配置. 这里主要用到了word的书签功能.
打开word按ctrl+shift+F5, 打开书签功能
如下图
如果所示, 可以选中word中的一个区域然后按ctrl+shift+F5, 对此部分添加一个书签
是否理解为这样是为这部分区域添加了指针? 根据图中的操作就可以明白了, 可以在对某些文字进行标识, 然后根据这个标识找到这部分进行操作.
第一篇文章小罗说了本次主要完成的内容, 下面说一下实现方式, 为了标识到各个书签的类型及一些关键配置,所以将书签的名字命名格式做了约定.
例如只是为了更新文字用的. 格式为 label_级别_名称
这里的loop是为了循环用, 这是报告中经常会 遇到的, 通过本例的目录就可以看出来
模板:
实际结果
这里的学期, 学生名字都是不固定的, 所以这里就定义了一下文档级别
文档最基本的为0级, 学期的循环为1级, 学期内姓名的循环为2级,依次类推.
因为存在循环,数据集也就会要求根据循环条件进行filter
所以loop的标签格式为 loop_级别_取Dataset中的第几张表(从1开始)_filter字段多个用XX隔开(此处不允许有下划线外其他特殊字符, 就用这个XX吧 )_loop名称
1. 更新指定位置的文字. -- 即如上图所示, 找到标签部分替换为数据源中的文字.
2. 支持表格. -- 此部分原本想对表格添加书签,后来发现有个表格属性, 觉得写在这里更好一些
标题的格式同loop
说明项可选, 若需要合计行, 则需要标识, summary或缩写s: [合计]行是模板中表格的第几行 summaryfilter或缩写sf:数据集进一步filter到summary行的条件(因为一个表格只取一个Datatable,通过一个标识指定了哪些datarow是用来作为合计的)
3. 支持图表.
配置在图表标题,格式为:chart_级别_取Dataset中的第几张表(从1开始)_filter字段多个用XX隔开(此处不允许有下划线外其他特殊字符, 就用这个XX吧 )_chart名称_是否将Datatable的columnName作为第一行_从datatable第几列开始(列起始为1)_截止列
4. 支持区域内容循环生成. -- 配置方式上文已说明, 程序会根据级别通过递归的方式处理.
5. 支持目录. -- 无需标识, 模板中添加目录, 当内容处理完成之后, 动态更新目录即可.