说明:使用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, "张三");