首页 > 其他分享 >【转】用pageOffice插件实现 word文档在线填充指定数据

【转】用pageOffice插件实现 word文档在线填充指定数据

时间:2023-01-12 21:24:30浏览次数:68  
标签:插件 word 书签 pageOffice 插入 区域 文档 Word 数据

pageOffice控件实现 office word文档在线填充指定数据

应用场景

OA办公中,经常要在文档的指定位置,填充后端指定数据。
如合同中, 姓名位置,金额位置,住址位置,要填充后端指定数据。合同其它的内容模板是统一的,不用改变。
怎么把后端的关键数据,填充到文档中呢?

实现方法

PageOffice可以实现在文档中标记的位置处动态填充内容

实现过程

以java的springboot框架为例

1 集成pageOffice

https://www.zhuozhengsoft.com/dowm/

从pageOffice官网
下载页面,找到springboot的集成示例,按照里面的集成明说,可以集成到自己的springboot项目中。

2 文档中设置数据区域方法

数据区域的技巧
https://www.kancloud.cn/pageoffice_course_group/pageoffice_course/663125

模板中如何指定位置(PageOffice中的“数据区域”)
模板中必须标记好数据要插入的位置,这样才可以实现用程序插入数据到文件的相应位置,就是说要想生成文件,数据的位置必须用某种元素来标记出来。使用PageOffice开发,常用的是Word书签来标记要插入数据的位置。
一般的开发人员使用Word比较少,可能不清楚Word书签是怎样插入的,下面简单的介绍一下插入书签的方法。
第一种方法:把光标定位到需要标记数据位置的地方,点Word菜单中的“插入”-“书签”,就会弹出一个标题为“书签”的对话框(如下图所示),输入新书签的名称,注意:书签名必须以字母、汉字、中文标点等开头,可以包含数字但中间不能有空格(用PageOffice开发的时候不推荐使用中文命名书签名)。点右侧的“添加”按钮,新的书签名将出现在下面的列表中。

第二种方法:选择几个文字、或一段文字、或者选择一段包含表格和图片的内容,为选中的内容指定书签的对象,然后执行第一种方法的同样操作,“插入”→“书签”……
注意:如果新插入位置或新对象采用的是已有的书签名,原有的书签将自动取消。

PageOffice示例代码中的模板在制作的时候,多采用第二中方法定义书签,插入书签之前会先写一个标示性的词语用中括号括起来,比如:[姓名],然后选中“[姓名]”,再插入书签。这样做的目的是便于在查看或编辑模板数据位置的时候一目了然。

3 设置数据区域 注意事项

方便显示书签可以设置如下

在使用PageOffice开发的过程中,为了避免出现与用户自己定义的书签出现冲突,要求插入的书签名称必须以“PO_”开头。注意是字母O,不是数字0。在PageOffice的概念里提到的数据区域,本质上就是书签,但是只有“PO_”开头的书签才叫数据区域,请大家注意这点。
模板的制作方法
制作模板的过程,实际上就是插入数据区域也就是插入“po_”开头的书签,标记在生成文件的时各个数据在文件查插入的位置,但是鉴于Word书签的特点:书签可以相互包含、相邻的书签会互相干扰,插入数据区域的时候需要一些技巧和注意事项,在这里一并介绍一下。
① 插入数据区域前选择的文本内容如果不是故意要跨段的话,不要选择段落末尾的回车换行符“┙”。
② 如果说“[姓名]”就是要插入的数据区域的文本标示,那么请在“[”前和“]”后分别插入一个空格变成“ [姓名] ”,但是选择的数据区域标示的时候不要选择中括号前后的空格,只选择“[姓名]”,然后点Word菜单中的“插入”-“书签”,命名为:PO_name。
③ 插入的任意的两个数据区域不能首尾相连。不允许前面的数据区域的末尾后面紧接着就是后一个数据区域的开始,中间连空格都没有,这是不允许的。
④ 插入的数据区域不要互相包含。不推荐一个数据区域中完整的包含了另一个数据区域,这样做在程序生成文件的时候,不会出现错误,但是没意义,除了造成使用的混乱之外没有好处。
在生成文件的时候,数据区域的标示会被程序中设置的值自动替换掉。

4 通过代码写入数据

设置好模板后。如图

@RequestMapping(value = "Word", method = RequestMethod.GET)
    public ModelAndView showWord(HttpServletRequest request, Map<String, Object> map) {
        PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
        poCtrl.setServerPage(request.getContextPath() + "/poserver.zz");//设置服务页面

        WordDocument doc = new WordDocument();
        //打开数据区域
        DataRegion dataRegion1 = doc.openDataRegion("PO_userName");
        //给数据区域赋值
        dataRegion1.setValue("张三");

        DataRegion dataRegion2 = doc.openDataRegion("PO_deptName");
        dataRegion2.setValue("销售部");

        poCtrl.setWriter(doc);
        //隐藏菜单栏
        poCtrl.setMenubar(false);
        //隐藏工具栏
        poCtrl.setCustomToolbar(false);

        //打开Word文档
        poCtrl.webOpen("/doc/DataRegionFill/test.doc", OpenModeType.docNormalEdit, "张三");
        map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1"));
        ModelAndView mv = new ModelAndView("DataRegionFill/Word");
        return mv;
    }

通过以上代码,可以将数据库中的 张三 和 销售部写到文档中。

代码打开后的效果

5 总结

通过pageOffice插件,可以简单的实现 word文档在线填充指定数据

标签:插件,word,书签,pageOffice,插入,区域,文档,Word,数据
From: https://www.cnblogs.com/uzi05/p/17047933.html

相关文章

  • 【转】PageOffice 在线编辑 office文件,回调父页面
    一、子页面调用父页面的方法varvalue=window.external.CallParentFunc("ParentFunName(Arguments);");//父页面的JS函数有返回值window.external.CallParentFunc("Paren......
  • 【转】PageOffice——动态填充Word模板并在线编辑
    说明:使用pageoffice动态给word模板填充数据,插入图片、excel、word格式的文件和创建表格。一、准备工作:本地创建一个doc或者docx格式的文件,在文件中需要插入数据的地方设......
  • next-theme接入valine评论插件
    前因之前用Hexo构建了博客,使用的next主题,最近升级了Hexo和next,遇到valine评论插件接入的问题,记录下我的解决方案解决首先,需要知道的是,next主题在github上有两个仓库,分别......
  • Visual Studio Code下实用插件
    查看VS已经安装的插件:点击侧边栏中的扩展按钮,然后在出现的搜索栏中输入@installed即可查看已经安装的插件1、GBKtoUTF8插件可以解决从其他地方拷贝代码到VS下的注释乱码......
  • SiteFactory编辑器支持Word文档粘贴
    ​ 这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下)<%@ page language="java"......
  • Nik Collection 5 for Mac(PS滤镜插件套装) v5.4.0/v4.3.6中文激活版
    NikCollection中文版是一款ps滤镜插件套装,其包含了八款ps插件,分别是NikColorEfex、NikSilverEfex、NikAnalogEfex、NikViveza、NikDfine、NikPerspectiveEfex,Ni......
  • SiteFactory编辑器支持Word文档上传
    ​ 当前功能基于PHP,其它语言流程大致相同 1.新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /* 上传word配置 */    "wordAction......
  • vite vue插件打包配置
    import{defineConfig,UserConfigExport,ConfigEnv}from"vite";importexternalGlobalsfrom"rollup-plugin-external-globals";importvuefrom"@vitejs/plugi......
  • 【工具推荐】 Obsidian 插件 Obsidian to Flomo 一键同步内容到 Flomo 插件
    一、Obsidian、Flomo、ObsidiantoFlomo他们都是什么?1.什么是Obsidian?Obsidian是一款本地管理文件的笔记软件,通过双向链接的方法,把笔记关联起来,形成相互关联的知识......
  • SiteFactory编辑器支持Word文档导入
    ​ 1.编辑器修改(可选)1.1在 ueditor/config.json 中添加代码块    /* 上传word配置 */    "wordActionName":"wordupload",/* 执行上传视频的action......