首页 > 其他分享 >PageOffice既保存Word文件中指定区域的数据又保存整篇文件

PageOffice既保存Word文件中指定区域的数据又保存整篇文件

时间:2023-04-06 14:57:29浏览次数:46  
标签:文件 poCtrl doc 保存 openDataRegion 整篇 PO

一、首先在word文件中给需要在后台获取数据的区域设置以PO_开头的书签。

image

二、通过pageoffice在线打开文件并编辑保存。有两种打开文件的模式

1、普通编辑模式(docNormalEdit)

普通编辑模式就是简单的打开文件,分别设置SaveDataPage保存数据的方法和SaveFilePage保存文件的方法即可,保存文件和保存数据是两个方法,不能写在一起

		PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
        poCtrl.setServerPage("/api/poserver.zz");//设置服务页面
        //添加自定义按钮
        poCtrl.addCustomToolButton("保存", "Save", 1);
        //设置保存数据的方法
        poCtrl.setSaveDataPage("/api/SaveDataAndFile/SaveData");
        //设置保存文档的方法
        poCtrl.setSaveFilePage("/api/SaveDataAndFile/save");
        //打开Word文档
        poCtrl.webOpen("G:\\doc\\word1.docx", OpenModeType.docNormalEdit, "张三");

2、表单提交模式(docSubmitForm)

提交模式打开文件默认是不可编辑的,将需要编辑的数据区域的Editing设置为true,其他与普通编辑模式打开一样

PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
        poCtrl.setServerPage("/api/poserver.zz");//设置服务页面
 
        WordDocument wordDoc = new WordDocument();
        //打开数据区域,openDataRegion方法的参数代表Word文档中的书签名称
        DataRegion dataRegion1 = wordDoc.openDataRegion("PO_userName");
        //设置DataRegion的可编辑性
        dataRegion1.setEditing(true);
        DataRegion dataRegion2 = wordDoc.openDataRegion("PO_deptName");
        dataRegion2.setEditing(true);
        DataRegion dataRegion3 = wordDoc.openDataRegion("PO_cause");
        dataRegion3.setEditing(true);
        poCtrl.setWriter(wordDoc);
        //添加自定义按钮
        poCtrl.addCustomToolButton("保存", "Save", 1);
        //设置保存数据的方法
        poCtrl.setSaveDataPage("/api/SaveDataAndFile/SaveData");
        //设置保存文档的方法
        poCtrl.setSaveFilePage("/api/SaveDataAndFile/save");
        //打开Word文档
        poCtrl.webOpen("G:\\doc\\word1.docx", OpenModeType.docSubmitForm, "张三");

三、保存文件

@RequestMapping("save")
    public void save(HttpServletRequest request, HttpServletResponse response) {
        FileSaver fs = new FileSaver(request, response);
        fs.saveToFile("G:\\doc\\" + fs.getFileName());
        fs.close();
    }

这是本地打开word文件后的效果,书签的内容是在线编辑保存的
image

四、保存数据

获取到的数据可以保存到数据库或者其他地方,具体保存到哪里与pageoffice没有直接关系,根据自己的业务逻辑处理即可,我是直接在后台输出了下

@RequestMapping("SaveData")
    public void saveData(HttpServletRequest request, HttpServletResponse response) {
        com.zhuozhengsoft.pageoffice.wordreader.WordDocument doc = new com.zhuozhengsoft.pageoffice.wordreader.WordDocument(request, response);
        //获取提交的数值
        String dataUserName = doc.openDataRegion("PO_userName").getValue();
        String dataDeptName = doc.openDataRegion("PO_deptName").getValue();
        String cause = doc.openDataRegion("PO_cause").getValue();
        System.out.println("姓名==="+dataUserName);
        System.out.println("部门==="+dataDeptName);
        System.out.println("原因==="+cause);
 
        doc.close();
    }

image

参考链接:https://blog.csdn.net/qq_44306545/article/details/128418533

标签:文件,poCtrl,doc,保存,openDataRegion,整篇,PO
From: https://www.cnblogs.com/qq742655/p/17292754.html

相关文章

  • vue里cdn引入改为本地js文件引用
     问题vue项目cdn引用会出现网络加载不了问题 vue项目cdn引用  改为本地public/index.html引入首先把cdn的链接复制在浏览器里打开或直接下载下来把js文件放到public文件夹下面  在index.html里引入,注意生产环境才加载出来 ......
  • input上传文件的实际应用
    'Content-Type':'multipart/form-data'类型使用场景:在vue2.0中,有统一的请求封装文件,下面文件为请求封装的使用,因项目不同可以忽略(vue-element-admin架构)html部分<divclass='public_normal_btn'@click='$refs.file_item.click()'>导入</div><inputsty......
  • php上传文件简单示例
    php上传文件简单示例 <?php$log='';$buf=ob_get_contents();ob_end_clean();$postmaxsize=trim(ini_get('post_max_size'));//preg_match_all('/\d+/',$postmaxsize,$arr);//$number=$arr[0][0];//if(strpos($postmaxsize,&#......
  • PHP上传文件的大小限制
    PHP上传文件的大小限制Warning:POSTContent-Lengthof625523488bytesexceedsthelimitof8388608bytesinUnknownonline0当Warning:online0做出错误警告时,设定error_reporting(0);ini_set("display_errors",0);无效如何不显示这种错误呢方法一:设置php.i......
  • 求PHP超大文件上传解决方案:分片断点上传(一)
    ​ PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。1.file_uploads=on/off 是否允许通过http方式上传文件2.max_execution_time=30 允许脚本最大执行时间,超过这个时间就会报错3.memory_limit=50M 设置脚本可以分配的最大内存量,防止失控脚本占用过多内存,此......
  • 互联网项目实战——Athena-OSS分布式文件存储服务设计
    摘要在系统中需要有统一的存储系统,用于较大型的文件和图片进行存储,Athena系统中利用开源的FastDFS来构建Athena分布式文件存储系统OSS服务。用于整个系统的存储服务。博文将详细的介绍分布式存储系统的背景和意义以及相关的技术选型与原理,供大家学习参考。一、分布式文件存储系统背......
  • kubernetes ConfigMap只挂载一个文件
    1.概述挂载一整个目录的方式详见<<kubernetesConfigMap的使用>>这里特别说明如何挂载目录和挂载一个文件详见官方文档:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/2.环境2.1.配置文件目录/var/app/mage-go-device/conf/......
  • 教育-文件读写
    Excel数据读写excel是一个软件,可以打开不同格式的文件:xlsx(office2016)openpyxl  常用xls(office2003)xlrd  过时了安装依赖pipinstallopenpyxlimportopenpyxlworkbook=openpyxl.load_workbook(path)#导入工作簿workbook.worksheets#list[<Worksheet......
  • 爬取王者荣耀皮肤并保存图片
    importrequestsimporttimeimportpathlibfromlxmlimportetreeheaders={"user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/108.0.0.0Safari/537.36"}url="https://pvp.qq.com......
  • 走进Java接口测试之读取配置文件
    前言但在大部分用例开发环境下,添加额外配置是无所避免的,比如自定义应用端口号、服务地址、数据库的配置等,都或多或少的需要一些外部的配置项等。在前文中我们有详细介绍在接口测试框架中如何基于SpringBoot快速搭建多环境配置,本文将在原有的基础上介绍集成如何快速读取配置文件的......