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

news2024/9/24 11:32:40

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,即实现除供货单位名称和担保人之外的所有内容都是只读不可编辑的。做如下编码:

PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);

WordDocument wordDoc = new WordDocument();
//打开数据区域,openDataRegion方法的参数代表Word文档中的书签名称
wordDoc.openDataRegion("PO_Buyer").setValue("北京幻想科技有限公司");
wordDoc.openDataRegion("PO_No").setValue("HT20230211");
wordDoc.openDataRegion("PO_ProductName").setValue("三防热敏标签纸");

DataRegion  supplierNameDr = wordDoc.openDataRegion("PO_Supplier");
supplierNameDr.setValue("湖北某某有限公司");
supplierNameDr.setEditing(true); // true代表当前数据区域可编辑,false为不可编辑。默认值是false

DataRegion  guarantorDr = wordDoc.openDataRegion("PO_Guarantor");
guarantorDr.setValue("张三");
guarantorDr.setEditing(true);

poCtrl.setWriter(wordDoc);//必须
poCtrl.setSaveFilePage("saveFile"); // 设置保存文件的接口地址
poCtrl.WebOpen("D:\\template1.docx", OpenModeType.docSubmitForm, "李四");

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

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

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

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

公文流转的需求

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

PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);

WordDocument wordDoc = new WordDocument();

if (loginUser.equals("A用户")){
  wordDoc.openDataRegion("PO_YanFa").setEditing(true); // 设置数据区域为可编辑状态
} else if (loginUser.equals("B用户") {
  dwordDoc.openDataRegion("PO_XiaoShou").setEditing(true); 
}

poCtrl.setWriter(wordDoc);//必须
poCtrl.setSaveFilePage("saveFile");
poCtrl.WebOpen("D:\\documents\\hetong.docx", OpenModeType.docSubmitForm, "张三");

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

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

编辑区域的定义

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

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1920888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu22.04安装NIVIDIA显卡驱动总结

1.首先在安装驱动时需要判断系统有无GPU以及GPU的型号 可以参考这篇文章: https://blog.51cto.com/u_13171517/8814753#:~:textubuntu%20%E7%B3%BB%E7%BB%9F%20%E6%80%8E%E4%B9%88%E5%88%A4%E6%96%AD%E7%B3%BB%E7%BB%9F%E6%9C%89%E6%B2%A1%E6%9C%89GPU%201%20%E6%…

2024骨传导耳机哪款值得买?健身人士说这五款骨传导耳机好~

在追求健康生活与高品质音频体验的今天,骨传导蓝牙耳机以其独特的魅力,引领了一场听觉革命。它巧妙利用骨骼传递声音,既保护了脆弱的耳膜,又带来了前所未有的佩戴自由。然而,在众多选择面前,如何慧眼识珠&a…

Python 使用proto 发送socket数据

import socket import binascii import struct from SensingMonitoring_pb2 import Command, CommandNamesif __name__ "__main__":client socket.socket(socket.AF_INET, socket.SOCK_STREAM)client.connect(("192.168.1.100", 22295))# 发送数据comman…

超实用调试技巧!还有用例讲解哦

文章目录 什么是bug?调试是什么?重要吗?2.1 调试是什么2.2 调试的基本步骤2.3 Debug和Release的介绍 3.Windows环境调试介绍3.1 调试环境的准备3.2 vs2022的快捷键3.3 调试时查看程序当前信息3.3.1 查看临时变量的值3.3.2 查看内存信息3.3.3 …

智能物联网鱼缸

硬件部分及接线图 工具 继电器、开发板、物联网os、云平台 微信小程序 结构&#xff1a;images、pages两个为主体。 标题头部分 <view class"container"> <view class"head_box"> <image src"/images/面性鱼缸.png"><…

公司裁员,为什么总是从技术人员开始?

今天聊一个让技术人员心塞的话题——公司裁员。不知道大家有没有发现&#xff0c;一到裁员的时候&#xff0c;技术人员往往就像那先被推出去的“小羊羔”。这到底是为啥呢&#xff1f;其实&#xff0c;很多时候是因为领导们的一些错误认识造成的职场乱象。 先来说说一些领导们的…

C++ 实现图书馆资料管理系统

1、问题描述 &#xff1a; 图书馆中的资料很多&#xff0c;如果能分类对其资料流通进行管理&#xff0c;将会带来很多方 便&#xff0c;因此需要有一个媒体库管理系统。 图书馆共有三大类物品资料&#xff1a;图书、视频光盘、图画。 这三类物品共同具有的属性有&#xff1a;编…

BFS:多源BFS问题

一、多源BFS简介 超级源点&#xff1a;其实就是把相应的原点一次性都丢到队列中 二、01矩阵 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:const int dx[4]{1,-1,0,0};const int dy[4]{0,0,1,-1};vector<vector<int>> updateMatrix(vector…

2024最新国际版抖音TikTok安装教程,免root免拔卡安卓+iOS,附全套安装工具!

我是阿星&#xff0c;今天给大家带来是2024年最新TikTok国际版抖音的下载和安装教程&#xff0c;而且还是免root免拔卡的那种&#xff0c;安卓和iOS都能用哦&#xff01;由于某些原因&#xff0c;国内用户并不能使用TikTok。今天阿星就教一下大家怎么安装TikTok。 TikTok在全球…

自动驾驶AVM环视算法--540度全景的算法实现和exe测试demo

参考&#xff1a;金书世界 540度全景影像是什么 540度全景影像是在360度全景影像基础上的升级功能&#xff0c;它增加了更多的摄像头来收集周围的图像数据。通常&#xff0c;这些摄像头分布在车辆的更多位置&#xff0c;例如车顶、车底等&#xff0c;以便更全面地捕捉车辆周围…

【C++题解】1156 - 排除异形基因

问题&#xff1a;1156 - 排除异形基因 类型&#xff1a;数组基础 题目描述&#xff1a; 神舟号飞船在完成宇宙探险任务回到地球后&#xff0c;宇航员张三感觉身体不太舒服&#xff0c;去了医院检查&#xff0c;医生诊断结果&#xff1a;张三体内基因已被改变&#xff0c;原有…

微信小程序---npm 支持

一、构建 npm 目前小程序已经支持使用 npm 安装第三方包&#xff0c;但是这些 npm 包在小程序中不能够直接使用&#xff0c;必须得使用小程序开发者工具进行构建后才可以使用。 为什么得使用小程序开发者工具需要构建呢❓ 因为 node_modules 目录下的包&#xff0c;不会参与…

【建议收藏】一万字图文并茂,终于有人把GPT的玩法整理全了

1. 学生常用 1.1 辅导作业、写作业 打数学建模和写期末作业~ Openai GPT-4o 模型从 2024 年 5 月发布以来&#xff0c;作为各项性能评测综合第一的 GPT。 对于法律类&#xff0c;语言类的作业&#xff0c;随意秒杀了&#xff01;&#xff01; 所以我决定让他做一道高等数学…

【开源项目的机遇与挑战】探索、贡献与应对

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 目录 引言 一&#xff1a;开源项目的发展趋势 &#x1f343;开源项目的蓬勃发展现状 &#x1f343;开…

GitHub访问慢的问题彻底解决(一)

1、访问巨慢&#xff0c;图片打不开 按照下面这个项目来解决 https://github.com/521xueweihan/GitHub520 【前提】能够访问github 本项目无需安装任何程序&#xff0c;通过修改本地 hosts 文件&#xff0c;试图解决&#xff1a; GitHub 访问速度慢的问题GitHub 项目中的图…

【STM32标准库】读写内部FLASH

1.内部FLASH的构成 STM32F407的内部FLASH包含主存储器、系统存储器、OTP区域以及选项字节区域。 一般我们说STM32内部FLASH的时候&#xff0c;都是指这个主存储器区域&#xff0c;它是存储用户应用程序的空间。STM32F407ZGT6型号芯片&#xff0c; 它的主存储区域大小为1MB。其…

JavaSE 面向对象程序设计进阶 IO 综合练习 利用糊涂包生成假数据 随机点名器 登录案例

目录 生成假数据 利用糊涂包生成假数据 随机点名器 综合练习 生成假数据 制造假数据 制造假数据也是开发中的一个能力 在各个网上爬取数据 这是其中一个方法 爬取网站中的内容 import cn.hutool.core.io.FileUtil;import java.io.IOException; import java.io.InputSt…

银行函证业务的数字化转型:合合信息智能文档处理平台如何实现集中化处理与全流程合规?

“银行函证”是注册会计师在获取被审计单位授权后&#xff0c;直接向银行业金融机构发出询证函&#xff0c;银行业金融机构针对所收到的询证函&#xff0c;查询、核对相关信息并直接提供书面回函的过程。 财政部、银保监会联合发布《关于加快推进银行函证规范化、集约化、数字…

教程系列2 | 趋动云『社区项目』一步实现与 AI 对话

上周&#xff0c;我们沉浸于文生图【教程系列1 | 趋动云『社区项目』极速部署 SD WebUI】的奇幻世界&#xff0c;领略了文字转化为视觉的无限乐趣。本周我们继续与 AI 进行对话&#xff0c;探索智能交互的无限魅力&#xff01; Llama3-8B-Chinese-Chat Llama3-8B-Chinese-Cha…

system V共享内存【Linux】

文章目录 原理shmgetftokshmat(share memory attach)shmdt&#xff0c;去关联&#xff08;share memory delete attach&#xff09;shmctl ,删除共享内存共享内存与管道 原理 共享内存本质让不同进程看到同一份资源。 申请共享内存&#xff1a; 1、操作系统在物理内存当中申请…