首页 > 其他分享 >转载:国产麒麟、uos在线编辑word文件并控制编辑区域(局部编辑)

转载:国产麒麟、uos在线编辑word文件并控制编辑区域(局部编辑)

时间:2024-08-01 13:30:52浏览次数:9  
标签:uos word wordDoc 编辑 区域 合同 Word PO

windows系统也适用,该插件可同时支持windows和国产系统

在实际项目开发中,以下场景可能会用到Word局部编辑功能:

  • 合同审批
  • 公文流转
  • 策划设计报告
  • 汇签单
  • 招投标(标书文件)
  • 其他,有模板且需要不同人员协作编辑的场景

PageOffice使用表单模式docSubmitForm打开Word文件之后,只有设置了Editing属性为true的数据区域部分是可以编辑的,Word中的其他部分都是只读不可编辑的,所以利用此特性就可以控制Word文件编辑区域,只要保存的时候不处理提交的数据,只是保存文件的话,就实现了局部编辑功能。

控制编辑区域实现局部编辑的功能,通常用在以下两个方面:

  • 只是为了控制Word文档中哪些位置属于可编辑区域,避免用户误操作修改、或故意修改编辑区域以外的内容;
  • 多人负责编辑Word文档中不同章节的情况下,控制不同用户编辑各自不同的区域;

以下我们就合同审批和公文流转两个场景来举例说明,PageOffice是如何使用局部编辑功能分别实现这两个需求的。

注意

“数据区域”是指word文件中名称以“PO_”开头的书签。

合同审批的需求

某公司要在线上起草采购合同,合同模板是固定的,合同条款几乎固定不变,只有签订合同的供货单位名称和担保人是根据实际情况变动的。因此,在线上制作合同时,只需要让合同中那些可变的区域可编辑,其他位置则不能编辑,这时就需要用到PageOffice的局部编辑功能。

在实际项目中,合同审批肯定会用到更多的数据区域,本文为了简明扼要,所以仅以有限的几个数据区域来举例说明。

首先,制作一个销售合同模板,比如:D:\template1.docx,里面包含了购货单位、供货单位、合同编号、产品名称、担保人等数据区域,如下图所示:

 然后,起草文件时,编程控制用表单模式docSubmitForm打开Word文件,并调用WordDocument对象动态填充从Web系统数据库中获取的所有数据到Word模板,生成合同文件的初稿,同时设置供货单位(PO_Supplier)和担保人(PO_Guarantor)两个数据区域的Editing属性为true,即实现除供货单位名称和担保人之外的所有内容都是只读不可编辑的。做如下编码:

  1. PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
  2. WordDocument wordDoc = new WordDocument();
  3. //打开数据区域,openDataRegion方法的参数代表Word文档中的书签名称
  4. wordDoc.openDataRegion("PO_Buyer").setValue("北京幻想科技有限公司");
  5. wordDoc.openDataRegion("PO_No").setValue("HT20230211");
  6. wordDoc.openDataRegion("PO_ProductName").setValue("三防热敏标签纸");
  7. DataRegion supplierNameDr = wordDoc.openDataRegion("PO_Supplier");
  8. supplierNameDr.setValue("湖北某某有限公司");
  9. supplierNameDr.setEditing(true); // true代表当前数据区域可编辑,false为不可编辑。默认值是false
  10. DataRegion guarantorDr = wordDoc.openDataRegion("PO_Guarantor");
  11. guarantorDr.setValue("张三");
  12. guarantorDr.setEditing(true);
  13. poCtrl.setWriter(wordDoc);//必须
  14. poCtrl.setSaveFilePage("saveFile"); // 设置保存文件的接口地址
  15. poCtrl.WebOpen("D:\\template1.docx", OpenModeType.docSubmitForm, "李四");

生成的合同初稿如下图所示:

保存合同文件时,在SaveFilePage属性指向的地址接口中,调用FileSaver对象保存合同文件为正式的文件名,比如:hetong001.docx,后面的流转和审核环节对hetong001.docx进行处理即可。

  1. FileSaver fs = new FileSaver(request, response);
  2. fs.saveToFile("D:\\hetong001.docx");
  3. fs.close();

这样一来,合同起草人员或合同流转审阅环节的其他人员,就只需要根据具体情况修改合同中相关数据,无需担心误操作修改了与Web系统紧密相关的关键数据(如“合同编号”),或其他关键合同条款。最后合同的审核环节,领导只需要关注合同中可编辑区域的数据,无需逐一核对全文数据,不用担心可编辑区域以外的其他内容发生变动,极大的提高了领导审核合同的效率。

公文流转的需求

起草人起草文档,然后文档在部门之间流转(或在人员之间流转),一个时常会遇到的需求就是,要求A部门人员不能编辑B部门区域的内容,反之亦然,否则就不能划清部门之间的责任。总的来说就是不同的人负责编辑文章中不同的区域,所以就需要控制编辑区域的功能。此功能基本上属于OA系统、文档系统、合同管理等各种类型的文档审核流转的核心功能。比如:打开公司公文,里面包含两个数据区域“研发部意见”和“销售部意见”,名称分别为:PO_YanFa、PO_XiaoShou,实现A用户打开公文后只能编辑研发部意见,B用户打开公文后只能编辑销售部意见,可以做如下编码:

  1. PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
  2. WordDocument wordDoc = new WordDocument();
  3. if (loginUser.equals("A用户")){
  4. wordDoc.openDataRegion("PO_YanFa").setEditing(true); // 设置数据区域为可编辑状态
  5. } else if (loginUser.equals("B用户") {
  6. dwordDoc.openDataRegion("PO_XiaoShou").setEditing(true);
  7. }
  8. poCtrl.setWriter(wordDoc);//必须
  9. poCtrl.setSaveFilePage("saveFile");
  10. poCtrl.WebOpen("D:\\documents\\hetong.docx", OpenModeType.docSubmitForm, "张三");

当A用户打开公文时只能编辑研发部意见的效果,如下图所示(只有黄色中括号内的区域可以编辑):

当B用户打开公文时只能编辑销售部意见的效果,如下图所示(只有黄色中括号内的区域可以编辑):

编辑区域的定义

方法一:编辑Word模板,即在Word文档中添加书签。在D盘根目录下新建Word文件,比如:D:\template1.docx,打开文件用光标选中需要标记为书签的文字,比如“[公司名称]”,然后点Word菜单中的“插入”-“书签”,就会弹出一个标题为“书签”的对话框(如下图所示),输入新书签的名称,注意:书签名必须以“PO_”开头,并由字母和数字组成,但中间不能有空格。点右侧的“添加”按钮,新的书签名将出现在下面的列表中。此方法适用于,模板在项目开发时就固定下来不再修改的场景。

方法二:请参考“用户自定义模板中数据区域”章节。此方法适用于,在项目发布运行后,用户还需要修改调整模板、甚至新建模板的场景。

原文链接:控制Word编辑区域(局部编辑) | PageOffice 开发者中心

 

标签:uos,word,wordDoc,编辑,区域,合同,Word,PO
From: https://www.cnblogs.com/lhl77/p/18336469

相关文章

  • 在AWS Lightsail建立WordPress Multisite & Route 53 subdomains & Hexo Blog & WordP
    1.0前言玩Startup比賽,因需高效快速地做POC原型產品,所以利用AWS云端服務來更快地開發。你會學到:LightSail建立WordpressmultisiteRoute53註冊WordpressSubdomains&GithubCuostomDomainLightSailCustomDomain&SSLHexo快速搭建GihubPages博客+ Route53 Custom......
  • Word文档删除最后一页空白页的超强方法(亲测有效)
    我们在编辑word文档时经常会遇到word文档多出最后一页空白页,无论怎样backspace和delete都无法删除空白页。以下方式主要为删除分页符的方法来删除最后一页。一、在倒数第二页的结尾,点击“显示分节符”按钮。二、将光标移动到分节符的前面,使用delete键,分节符和最后一页空白页都......
  • .NET程序集编辑神器 dnSpy 使用介绍
    原文链接:https://www.cnblogs.com/zhaotianff/p/17352882.htmldnSpydnSpy是一个.NET程序集调试器和编辑器。它可以用它来编辑和调试程序集,即使在没有源码的情况下。主要功能:调试.NET和Unity程序集编辑.NET和Unity程序集 项目地址:https://github.com/dnSpy/dnSpy直接......
  • 专业编辑必备神器是啥?笔灵去AI痕迹编辑版,快速降痕更专业
    如今,内容创作与编辑在各行各业都占据着重要位置。但随着AI写作工具的普及,文章中的AI“指纹”愈发明显,既影响原创性又干扰阅读体验。因此,如何高效清除这些AI痕迹,成为编辑与作者们亟需解决的难题。而笔灵AI去AI痕迹编辑版的问世,恰如及时雨,为我们带来了解决之道。传送门:https://i......
  • Vue3 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档
    前言如果您需要Vue2版本,请访问这篇文章。在vue3|nuxt3项目开发中,详解实现项目内部“打开解析预览各种office文档”通用预览插件,支持弹出一个窗口在弹框内预览或者直接显示在页面某个div容器里面,解析预览word文档、excel电子表格、ppt演示文稿、pdf文档、txt文......
  • Vue2 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档
    前言如果您需要Vue3版本,请访问在vue2|nuxt2项目开发中,详解实现项目内部“打开解析预览各种office文档”通用预览插件,解析预览word文档、excel电子表格、ppt演示文稿、pdf文档、txt文本等,支持弹出一个窗口在弹框内预览或者直接显示在页面某个div容器里面,让vue项......
  • Access denied for user 'root'@'localhost' (using password: YES)
    1.启动项目报连接数据库被拒绝![](https://img2024.cnblogs.com/blog/3413037/202407/3413037-20240731113834004-615120424.png)2.用数据库连接工具也是提示同样错误![](https://img2024.cnblogs.com/blog/3413037/202407/3413037-20240731113958582-2045494132.png)3.查看my......
  • 会议海报/论文海报编辑流程
    模板网站https://www.posterpresentations.com/free-poster-templates.html选择感兴趣的模板,下载对应的尺寸比如下载第一个,想要改变颜色设计的话,在ppt中最上面点击“设计-变体更多-颜色”,可以整体更改模板颜色  如果想要修改模板背景色之类的,比如改成白色,点击“视图-幻......
  • Linux 文件内容查看编辑
     1.Linux文件内容查看编辑要点连接文件并打印到标准输出设备-使用cat显示指定文件的开头若干行-使用head显示指定文件的末尾若干行,常用语实时打印日志文件内容-使用tail显示文件内容,每次显示一屏-使用more显示文件内容,每次显示一屏-使用less自动编辑一个或......
  • 安防视频监控EasyCVR视频汇聚平台无法编辑设备通道信息的原因排查及解决
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构,兼容性强、支持多协议接入,包括国标GB/T28181协议、部标JT808、GA/T1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等。视频汇聚EasyCVR视频......