使用 ReportLite 外部库自动插入报表到 word 模板
在很多业务场景中需要在 word 文档中嵌入报表。比如下图这个报告:
..
这是一个某大学年度毕业生就业报告,报告中的表格和统计图的数据来自数据库,如果通过报表工具,制作这样的表格和统计图是轻而易举的事情,但如果要把这些报表和统计图做到 word 报告里就麻烦很多。以往有两个办法:一是每次做好报表和统计图之后,导出为 word,再手工复制粘贴到 word 报告中;二是把整个报告都做成一个报表模板,然后再一起导出为 word。 方法一,纯手工操作效率低;方法二,报表工具排版能力有限,生成的 word 版面效果不够完美。
那么,还有什么好办法呢?
通常这类报告都有规定的模板样式,只是要定期替换里面的个别信息,比如上图所示的文档编号(Document NO.),报告时间(Created On),标题里的年度,图片,每个章节下的报表和统计图,只有这些信息是动态变化的,而其他文字描述部分以及整体样式都是固定不变的。所以,如果能把报表嵌入 word 文档做成流水线式的自动化过程,那就是一件两全其美,事半功倍的事情。
在集算器中使用 ReportLite 外部库就能把报表嵌入到 word,实现步骤如下:
1、制作 word 模板,将需要插入或替换内容的位置设置好书签
比如我们开篇看到的大学毕业生就业报告,我们可以先做成如上图所示的 word 模板,图示绿色线框位置就是需要定期更新的部分,预先在这些位置插入书签(比如书签名为:code,date,logo,year,report,graph),以此标记要插入或替换到 word 的内容。书签可以定义在模板文字上,这样执行时会将新的文本替换掉模板文本,而文字样式保持不变。如上图书签 code,date,year。书签也可以只定义一个位置,此时会将新的内容插入到指定位置,比如上图书签的 report 和 graph。
2、制作报表
在 ReportLite 设计器中,制作好毕业去向统计表以及出国深造的统计图。
3、将 ReportLite 外部库压缩包解压到工作目录。
注意是要将整个外部库目录解压到工作目录,比如解压到 E:\external\ReportLiteCli 下。
4、在集算器环境中设置外部库。
打开选项对话框,选择外部库目录:
如下设置外部库目录,外部库目录选到解压包的上层工作目录即可,应用会自动列出外部库目录下的所有外部库,如下图的 E:\external。并在随后列出的 ReportLiteCli 包名后,勾选中以加载当前外部库:
5、开发并归置所有文件到同一目录
在确认第 4 节中选项对话框的主目录为空时,将所有相关文件放在同一目录下,脚本中只需引用文件名,方便局部代码移植和维护。如果项目文件比较多,有些文件需要公用,则使用相对主目录的分类包名更好管理。
比如所有文件都位于:E:\external\demo 下:
6、编辑并运行 demo.splx 脚本,便可按照要求生成本文开头的 word 文档。
集算器 |
A |
B |
1 |
=reportlite_open("template.docx") |
打开 word 模板 |
2 |
=reportlite_insert(A1,"code","12345678") |
分别在书签“code”、“date”、“year”替换对应文字 |
3 |
=reportlite_insert(A1,"date","20240730") |
|
4 |
=reportlite_insert(A1,"year","2024") |
|
5 |
=file("logo.jpg") |
加载 logo 文件 |
6 |
=reportlite_insert(A1,"logo",A5) |
在书签“logo”处替换图片 |
7 |
=reportlite_open("report.rptx") |
打开 ReportLite 文件 report.rptx |
8 |
=reportlite_run(A7) |
计算该报表 |
9 |
=reportlite_insert(A1,"report",A7) |
在书签“report”处插入计算后的报表 |
10 |
=reportlite_open("graph.rptx") |
打开 ReportLite 文件 graph.rptx |
11 |
=reportlite_run(A10) |
计算统计图 |
12 |
=reportlite_insert(A1,"graph",A10) |
在书签“graph”处插入计算后的统计图 |
13 |
=reportlite_write(A1,"2024.docx") |
将插入了报表的文档写出到 2024.docx |