首页 > 其他分享 >pageoffice6 实现提取数据区域为子文件(Word拆分)

pageoffice6 实现提取数据区域为子文件(Word拆分)

时间:2023-12-22 13:33:08浏览次数:22  
标签:Word doc PageOffice pageoffice6 bWord 为子 PO DataRegion

在实际的开发过程中,有时会遇到希望提取Word文档中部分内容保存为子文件的需求,PageOffice支持提取Word文档数据区域中的内容为一个Word文件流,在服务器端创建PageOffice的WordReader命名空间中的WordDocument对象并获取到DataRegion对象,再调用DataRegion对象的FileBytes属性就可以得到这个子Word文件流。

注意
PageOffice获取Word文档中指定位置的数据,是通过调用PageOffice获取数据区域的功能,实现此目的。在PageOffice的概念里提到的数据区域,本质上就是书签,但是只有“PO_”开头的书签才叫数据区域。

后端代码

在后端编写代码调用webOpen方法以表单提交模式docSubmitForm打开文件,设置数据区域SubmitAsFile属性为true,并设置接收处理PageOffice客户端控件提交数据的服务器端后台方法为:saveData,如果用户在线编辑文档保存时,数据区域中的内容就会被抽取为Word文件流,并提交到服务器端后台方法saveData,保存为子文件即可。

    PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);

    WordDocument wordDoc = new WordDocument();
    //打开数据区域,openDataRegion方法的参数代表Word文档中的书签名称
    DataRegion dataRegion1 = wordDoc.openDataRegion("PO_Sub1");
    dataRegion1.setSubmitAsFile(true);
    DataRegion dataRegion2 = wordDoc.openDataRegion("PO_Sub2");
    dataRegion2.setSubmitAsFile(true);
    dataRegion2.setEditing(true);
    DataRegion dataRegion3 = wordDoc.openDataRegion("PO_Sub3");
    dataRegion3.setSubmitAsFile(true);

    poCtrl.setWriter(wordDoc);//此行必须
    poCtrl.setSaveDataPage("saveData");//此行必须
    //webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
    //查看详细,请在本站搜索“PageOffice属性或方法中涉及到的URL路径或磁盘路径的说明”
    poCtrl.webOpen("D:\\documents\\test.docx", OpenModeType.docSubmitForm, "张三");

在服务器端后台方法saveData中,创建com.zhuozhengsoft.pageoffice.wordreader命名空间中的WordDocument对象,提取各数据区域中的子文档。

    WordDocument doc = new WordDocument(request, response);
    byte[] bWord;

    DataRegion dr1 = doc.openDataRegion("PO_Sub1");
    bWord = dr1.getFileBytes();
    FileOutputStream fos1 = new FileOutputStream("D:\\documents\\sub1.doc");
    fos1.write(bWord);
    fos1.flush();
    fos1.close();

    DataRegion dr2 = doc.openDataRegion("PO_Sub2");
    bWord = dr2.getFileBytes();
    FileOutputStream fos2 = new FileOutputStream("D:\\documents\\sub2.doc");
    fos2.write(bWord);
    fos2.flush();
    fos2.close();

    DataRegion dr3 = doc.openDataRegion("PO_Sub3");
    bWord = dr3.getFileBytes();
    FileOutputStream fos3 = new FileOutputStream("D:\\documents\\sub3.doc");
    fos3.write(bWord);
    fos3.flush();
    fos3.close();

    doc.close();

参考链接:提取数据区域为子文件(Word拆分)

标签:Word,doc,PageOffice,pageoffice6,bWord,为子,PO,DataRegion
From: https://www.cnblogs.com/qq742655/p/17921400.html

相关文章

  • elementUI 的el-dialog作为子组件,父组件如何控制其关闭的按钮
    这里有三点需要说明:1.使用:before-close="closeHandle"将其$emit()出去2.取消按钮也需要$emeit出去3.控制对话框显示隐藏的变量需要props给父组件来传值,这个相当重要,不然控制不了对话框的显示隐藏4.1,2步骤是为了在子组件不再重复操作显示隐藏的变量,vue会报错<templat......
  • C#替换Word中的文本内容(亲测)
    1   Word文档文本替换时长度不能超过255个字符,不能一次性替换,本方法通过循环替换,达到替换超过255字符的目的。///<summary>///替换word中的文字///</summary>///<paramname="filePath">文件的路径</param>///<paramname="datas">包含待替换字符串和替换字符串的......
  • word文档转html富文本,富文本编辑器 转成html5代码
    用我现在最常使用的php框架fastadmin举例子,当然thinkphp或者原生php也是同样的原理,大家理解思路就好了、 环境:fastadmin,summernote编辑器【summernote的居中功能在段落里,且不会吃掉section标签,加上导入word功能之后,简直完美~】 按照国际惯例先放效果图  github上的de......
  • PHP读取word文档
    1.安装1.1composer安装phpoffice/phpwordcomposerrequirephpoffice/phpword1.2后台代码 $file=$this->request->request('file');if(!$file){$this->error(__('Parameter%scannotbeempty','file......
  • 7、手签名放在文档里面—word
    1、在纸上写名字,然后拍照2、把图片插入word里面,右键【环绕文字】—>【浮于文字上方】3、用裁剪工具,把图片裁小点4、【设置图片格式】的参数就可以了 缺点:因为还是图片,所有它会覆盖文字的这个是没设置前的图片 ......
  • 1、组织架构图—word
    1、在word里面录入所有的文字2、选中一级的文字,按【Tab】键,降级3、选中二级文字,按【Tab】键,降级4、选中三级文字,按【Tab】键,降级    5、将【布局】—>【纸张方向】—>【横向】,然后【Ctrl+A】全选文字,最后【Ctrl+x】剪切文字,点击【插入】—>【smartart】—>【层次结构......
  • React项目中报错:Parsing error: The keyword 'import' is reservedeslint
    记得更改完配置后,要重启编辑器(如:VSCode)!!!记得更改完配置后,要重启编辑器(如:VSCode)!!!记得更改完配置后,要重启编辑器(如:VSCode)!!!这个错误通常发生在你尝试在一个不支持ES6模块语法的环境中使用import关键字。ESLint默认使用的是ES5语法,如果你想使用ES6或者更新的语法,你......
  • uniapp app安卓、ios文件选择 (上传pdf word video img )等
    1、hybrid 必须放在项目根目录下,不然会调用失效:如图 2、建立nvue 子窗体  代码:1<template>2<viewclass="nvue">3<textclass="popup-item"@click="clickfun">选择文件</text>4<textclass="ddddd......
  • wordpress博客系统
    wordpress博客系统LNMP:Linux+nginx+mysql+php一个操作系统+web网站+一个数据库存放数据+后端编程语言基于红帽操作系统来搭建1.需要一个本地yum仓库[[email protected]]#vimlocal.repo[local]name=localbaseurl=file:///mediaenabled=1gpgcheck=0[root@ser......
  • 宝塔面板搭建部署wordpress个人网站实现无公网即可远程访问(小白建站福音!!)
    WordPress是一个非常灵活和强大的博客建站平台,适用于各种不同类型的网站建设需求。简单几步实现宝塔面板结合cpolar工具实现无公网远程访问,无需云服务器即可发布自己的网站到公网访问1.环境安装wordpress运行需要PHP环境,我们在宝塔商店中我们搜索PHP8.0版本安装 然后安......