PageOffice——动态填充Word模板并在线编辑

发布时间 2023-04-07 10:00:23作者: 爱吃苹果皮

说明:使用pageoffice动态给word模板填充数据,插入图片、excel、word格式的文件和创建表格。

一、准备工作:

本地创建一个doc或者docx格式的文件,在文件中需要插入数据的地方设置以“PO_”开头的书签(pageoffice只能识别“PO_”开头的书签)。

 二、插入图片

  1. PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
  2. poCtrl.setServerPage("/poserver.zz");//设置服务页面
  3. WordDocument worddoc = new WordDocument();
  4. //给DataRegion插入图片,值的形式为:"[image]图片路径[/image]"
  5. DataRegion data1 = worddoc.openDataRegion("PO_image");
  6. data1.setValue("[image]G:\\doc\\test.jpg[/image]");
  7. //设置 PageOfficeCtrl 控件的数据对象,这句不写插入图片代码不生效
  8. poCtrl.setWriter(worddoc);
  9. //打开Word文档
  10. poCtrl.webOpen("G:\\doc\\template.docx", OpenModeType.docNormalEdit, "张三");

三、插入word文件

  1. PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
  2. poCtrl.setServerPage("/poserver.zz");//设置服务页面
  3. WordDocument worddoc = new WordDocument();
  4. //给DataRegion插入word文件,值的形式为:"[word]word文件路径[/word]"
  5. DataRegion data2 = worddoc.openDataRegion("PO_word");
  6. data2.setValue("[word]G:\\doc\\template1.docx[/word]");
  7. poCtrl.setWriter(worddoc);
  8. //打开Word文档
  9. poCtrl.webOpen("G:\\doc\\template.docx", OpenModeType.docNormalEdit, "张三");

四、插入excel文件

  1. PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
  2. poCtrl.setServerPage("/poserver.zz");//设置服务页面
  3. WordDocument worddoc = new WordDocument();
  4. //给DataRegion插入excel文件,值的形式为:"[excel]excel文件路径[/excel]"
  5. DataRegion data3 = worddoc.openDataRegion("PO_excel");
  6. data3.setValue("[excel]G:\\doc\\template2.xlsx[/excel]");
  7. poCtrl.setWriter(worddoc);
  8. //打开Word文档
  9. poCtrl.webOpen("G:\\doc\\template.docx", OpenModeType.docNormalEdit, "张三");

五、动态创建表格并赋值

pageoffice动态创建表格和本地office创建表格一样,可以设置表格的边框颜色、边框类型、边框线条样式和边框粗细等等,也可以合并单元格,具体方法可以参考帮助文档:生成的文档(无标题)

  1. PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
  2. poCtrl.setServerPage("/poserver.zz");//设置服务页面
  3. WordDocument worddoc = new WordDocument();
  4. //动态创建一个4行4列根据活动窗口的宽度自动调整大小的表格
  5. DataRegion data4 = worddoc.openDataRegion("PO_table");
  6. Table table = data4.createTable(4, 4, WdAutoFitBehavior.wdAutoFitWindow);
  7. //设置表格边框颜色
  8. table.getBorder().setLineColor(Color.red);
  9. //合并单元格
  10. table.openCellRC(1,1).mergeTo(2,1);
  11. table.openCellRC(1,1).setValue("合并");
  12. poCtrl.setWriter(worddoc);
  13. //打开Word文档
  14. poCtrl.webOpen("G:\\doc\\template.docx", OpenModeType.docNormalEdit, "张三");

 整体效果和代码:

  1. PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
  2. poCtrl.setServerPage("/poserver.zz");//设置服务页面
  3. WordDocument worddoc = new WordDocument();
  4. //给DataRegion插入图片,值的形式为:"[image]图片路径[/image]"
  5. DataRegion data1 = worddoc.openDataRegion("PO_image");
  6. data1.setValue("[image]G:\\doc\\test.jpg[/image]");
  7. //给DataRegion插入word文件,值的形式为:"[word]word文件路径[/word]"
  8. DataRegion data2 = worddoc.openDataRegion("PO_word");
  9. data2.setValue("[word]G:\\doc\\template1.docx[/word]");
  10. //给DataRegion插入excel文件,值的形式为:"[excel]excel文件路径[/excel]"
  11. DataRegion data3 = worddoc.openDataRegion("PO_excel");
  12. data3.setValue("[excel]G:\\doc\\template2.xlsx[/excel]");
  13. //动态创建一个4行4列根据活动窗口的宽度自动调整大小的表格
  14. DataRegion data4 = worddoc.openDataRegion("PO_table");
  15. Table table = data4.createTable(4, 4, WdAutoFitBehavior.wdAutoFitWindow);
  16. //设置表格边框颜色
  17. table.getBorder().setLineColor(Color.red);
  18. //合并单元格
  19. table.openCellRC(1,1).mergeTo(2,1);
  20. table.openCellRC(1,1).setValue("合并");
  21. poCtrl.setWriter(worddoc);
  22. //打开Word文档
  23. poCtrl.webOpen("G:\\doc\\template.docx", OpenModeType.docNormalEdit, "张三");

转载:PageOffice——动态填充Word模板并在线编辑