国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版实现Word多文件合并

PageOffice 国产版 :支持信创系统,支持银河麒麟 V10 和统信 UOS,支持 X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)芯片架构。

本示例关键代码的编写位置
Vue+Springboot

注意
本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。

不管是将多个 Word 文件插入到 Word 模板指定位置,生成一个合并文档,还是将多个 Word 文档插入到一个空白的 Word 文件中,首尾连接成一篇文档,都需要用到 PageOffice 提供的数据区域插入 Word 文档功能。

在实际项目开发中,以下场景可能会用到 Word 多文件合并功能:

  • 起草合同 比如在一个 Web 项目的起草合同页面,可以选择合同模板,并填写此模板所需要的合同名称、甲乙双方单位名称、合同金额等合同相关信息,还可以选择 A、B、C、D 等合同条款项,每个合同条款中的内容都是保存在一个单独 Word 文件中。用户起草合同时,选择了合同模板,输入了合同的各项信息,并勾选了 A、C 两个条款项,实现自动生成合同的功能:把用户填写的合同信息动态插入到合同模板,并把 A、C 两个条款项的 Word 文件分别插入到合同模板的对应位置。
  • 生成可行性报告 比如公司准备研发某个产品,公司各个部门都需要准备自己的参考意见,市场部需要提供市场分析报告,研发部需要提供技术分析报告等,每个部门都编写了各自的调查分析报告 Word 文件,最后生成给领导查看的可行性报告文件时,就需要把各部门的报告分别插入到可行性报告中对应的章节里,合并成一篇 Word 文件。
  • 标书制作 比如在标书的制作过程中,可能单独有几个 word 文件,如标书主体文件、技术方案、成本估算等等,然后分别由不同人负责的,各自编辑,最后插入各项子文件到标书主体文件,合并成一个最终的标书文档。
  • 试卷生成 比如老师要编写一个试卷,试题库把每道试题都单独保存在一份 Word 文件中,并对应一条数据库记录,老师可以在网页上勾选题库中的试题,最后确认生成试卷时,把每道试题的 Word 文件都合并到同一个试卷的 Word 文档中。

本文就以“OA 项目立项可行性分析报告”为例,说明一下 PageOffice 是如何使用 Word 合并功能实现生成可行性报告的。比如某员工编辑了可行性报告的主体文件,如下图所示。为了让功能描述更简单明了,文件中只使用了两个数据区域 PO_Budget(项目预算分析) 和 PO_Design(项目架构设计)。

image

比如开发部编辑的项目架构设计报告文档内容如下图所示:
image

财务部门负责制定的财务预算报告内容如下图格所示:
image

调用 PageOffice 的 Word 合并功能,把开发部编辑的项目架构设计文档插入到报告主体文件的数据区域 PO_Design 中,把财务部门负责制定的财务预算文档插入到数据区域 PO_Budget 中,生成的最终可行性报告如下图所示:
image

后端代码

调用 PageOffice 在线打开报告主体文件,比如:D:\BaoGao.docx,并动态插入项目架构设计文档(Design.docx)和财务预算文档(Budget.docx)到对应的数据区域中:

 PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);

WordDocument worddoc = new WordDocument();
//“[word][/word]”标签的参数地址可以是“磁盘路径”,也可以是“文档 url 下载地址(不支持跨域)”
worddoc.openDataRegion("PO_Design").setValue("[word]D:\Design.docx[/word]");
worddoc.openDataRegion("PO_Budget").setValue("[word]D:\Budget.docx[/word]");

poCtrl.setWriter(worddoc);// 必须
poCtrl.WebOpen("D:\BaoGao.docx", OpenModeType.docNormalEdit, "张三");

参考链接:Word 多文件合并