pageoffice 6 实现数据区域填充(插入文本、图片、word、excel等)

发布时间 2023-12-08 14:21:39作者: qianxi

在实际的Word文档开发中,经常需要自动填充数据到Word模板中,以生成动态的Word文档。
例如:
1、我们可以根据数据库表中已保存的个人信息,设计好一个简历模板docx文件,然后通过代码将这些个人信息填充到Word模板中,从而自动生成一份简历。
2、如果需要将图片插入到Word模板指定位置,比如简历模板中预留的照片位置插入个人照片,则需要用到数据区域中插入图片功能。
3、如果需要将多个word文件插入到Word模板指定位置,生成一个合并文档的效果,则需要用到数据区域中插入word文档功能。
4、在实际开发中,如果需要在word文件中插入一个excel表单,则需要用到数据区域中插入excel文件功能。

要实现以上功能,可以利用PageOffice提供的操作数据区域的对象。前提是您当前word模板中必须提前设置好数据区域,数据区域通常由开发人员或者系统管理员手动设置。

数据区域的制作过程

首先,编辑Word模板,即在Word文档中添加书签。在D盘根目录下新建Word文件,比如:D:\template1.docx,打开文件用光标选中需要标记为书签的文字,比如“[用户名]”,然后点Word菜单中的“插入”-“书签”,就会弹出一个标题为“书签”的对话框(如下图所示),输入新书签的名称,注意:书签名必须以“PO_”开头,并由字母和数字组成,但中间不能有空格。点右侧的“添加”按钮,建议按照上面的说明自己手动创建template1.docx并设置书签。
image

在使用PageOffice开发的过程中,为了避免出现与用户自己定义的书签出现冲突,要求插入的书签名称必须以“PO_”开头。注意是字母o,不是数字0。在PageOffice的概念里提到的数据区域,本质上就是书签,但是只有“PO_”开头的书签才叫数据区域。

编写代码打开template1.docx文件,并动态填充数据。

后端代码

PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);

WordDocument doc = new WordDocument();
DataRegion dataRegion1 = doc.openDataRegion("PO_UserName");//打开数据区域"PO_UserName"
dataRegion1.setValue("张三");//给数据区域赋值
//dataRegion1.setValue("[image]D:\\ZhaoPian.png[/image]");//给数据区域插入图片
//dataRegion1.setValue("[word]D:\\p1.docx[/word]");
//dataRegion1.setValue("[excel]D:\\p1.xlsx[/excel]");
poCtrl.setWriter(doc); // 必须。
poCtrl.webOpen("D:\\template1.docx", OpenModeType.docNormalEdit, "张佚名");