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

发布时间 2023-06-28 17:53:57作者: qianxi

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

一、准备工作:

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

二、插入图片

        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, "张三");

image

三、插入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, "张三");

image

四、插入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, "张三");

image

五、动态创建表格并赋值

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, "张三");

image

整体效果和代码:

        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, "张三");

image