PageOffice——动态填充Word模板并在线编辑
说明:使用pageoffice动态给word模板填充数据,插入图片、excel、word格式的文件和创建表格。
一、准备工作:
本地创建一个doc或者docx格式的文件,在文件中需要插入数据的地方设置以“PO_”开头的书签(pageoffice只能识别“PO_”开头的书签)。
二、插入图片
- PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
- poCtrl.setServerPage("/poserver.zz");//设置服务页面
-
- WordDocument worddoc = new WordDocument();
-
- //给DataRegion插入图片,值的形式为:"[image]图片路径[/image]"
- DataRegion data1 = worddoc.openDataRegion("PO_image");
- data1.setValue("[image]G:\\doc\\test.jpg[/image]");
-
- //设置 PageOfficeCtrl 控件的数据对象,这句不写插入图片代码不生效
- poCtrl.setWriter(worddoc);
-
- //打开Word文档
- poCtrl.webOpen("G:\\doc\\template.docx", OpenModeType.docNormalEdit, "张三");
三、插入word文件
- PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
- poCtrl.setServerPage("/poserver.zz");//设置服务页面
-
- WordDocument worddoc = new WordDocument();
-
- //给DataRegion插入word文件,值的形式为:"[word]word文件路径[/word]"
- DataRegion data2 = worddoc.openDataRegion("PO_word");
- data2.setValue("[word]G:\\doc\\template1.docx[/word]");
-
- poCtrl.setWriter(worddoc);
-
- //打开Word文档
- poCtrl.webOpen("G:\\doc\\template.docx", OpenModeType.docNormalEdit, "张三");
四、插入excel文件
- PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
- poCtrl.setServerPage("/poserver.zz");//设置服务页面
-
- WordDocument worddoc = new WordDocument();
-
- //给DataRegion插入excel文件,值的形式为:"[excel]excel文件路径[/excel]"
- DataRegion data3 = worddoc.openDataRegion("PO_excel");
- data3.setValue("[excel]G:\\doc\\template2.xlsx[/excel]");
-
- poCtrl.setWriter(worddoc);
-
- //打开Word文档
- poCtrl.webOpen("G:\\doc\\template.docx", OpenModeType.docNormalEdit, "张三");
五、动态创建表格并赋值
pageoffice动态创建表格和本地office创建表格一样,可以设置表格的边框颜色、边框类型、边框线条样式和边框粗细等等,也可以合并单元格,具体方法可以参考帮助文档:生成的文档(无标题)
- PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
- poCtrl.setServerPage("/poserver.zz");//设置服务页面
-
- WordDocument worddoc = new WordDocument();
-
- //动态创建一个4行4列根据活动窗口的宽度自动调整大小的表格
- DataRegion data4 = worddoc.openDataRegion("PO_table");
- Table table = data4.createTable(4, 4, WdAutoFitBehavior.wdAutoFitWindow);
- //设置表格边框颜色
- table.getBorder().setLineColor(Color.red);
- //合并单元格
- table.openCellRC(1,1).mergeTo(2,1);
- table.openCellRC(1,1).setValue("合并");
-
- poCtrl.setWriter(worddoc);
-
- //打开Word文档
- poCtrl.webOpen("G:\\doc\\template.docx", OpenModeType.docNormalEdit, "张三");
整体效果和代码:
- PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
- poCtrl.setServerPage("/poserver.zz");//设置服务页面
-
- WordDocument worddoc = new WordDocument();
-
- //给DataRegion插入图片,值的形式为:"[image]图片路径[/image]"
- DataRegion data1 = worddoc.openDataRegion("PO_image");
- data1.setValue("[image]G:\\doc\\test.jpg[/image]");
-
- //给DataRegion插入word文件,值的形式为:"[word]word文件路径[/word]"
- DataRegion data2 = worddoc.openDataRegion("PO_word");
- data2.setValue("[word]G:\\doc\\template1.docx[/word]");
-
- //给DataRegion插入excel文件,值的形式为:"[excel]excel文件路径[/excel]"
- DataRegion data3 = worddoc.openDataRegion("PO_excel");
- data3.setValue("[excel]G:\\doc\\template2.xlsx[/excel]");
-
- //动态创建一个4行4列根据活动窗口的宽度自动调整大小的表格
- DataRegion data4 = worddoc.openDataRegion("PO_table");
- Table table = data4.createTable(4, 4, WdAutoFitBehavior.wdAutoFitWindow);
- //设置表格边框颜色
- table.getBorder().setLineColor(Color.red);
- //合并单元格
- table.openCellRC(1,1).mergeTo(2,1);
- table.openCellRC(1,1).setValue("合并");
-
- poCtrl.setWriter(worddoc);
-
- //打开Word文档
- poCtrl.webOpen("G:\\doc\\template.docx", OpenModeType.docNormalEdit, "张三");