首页 > 系统相关 >国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版控制Word编辑区域(局部编辑)

国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版控制Word编辑区域(局部编辑)

时间:2024-06-06 15:44:18浏览次数:15  
标签:uos Word wordDoc 编辑 国产 区域 合同 PO

本示例关键代码的编写位置
Vue+Springboot

注意
本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。

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

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

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

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

  • 只是为了控制Word文档中哪些位置属于可编辑区域,避免用户误操作修改、或故意修改编辑区域以外的内容;
  • 多人负责编辑Word文档中不同章节的情况下,控制不同用户编辑各自不同的区域;
    以下我们就合同审批和公文流转两个场景来举例说明,PageOffice是如何使用局部编辑功能分别实现这两个需求的。

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

合同审批的需求

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

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

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

然后,起草文件时,编程控制用表单模式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, "李四");

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

保存合同文件时,在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用户打开公文时只能编辑研发部意见的效果,如下图所示(只有黄色中括号内的区域可以编辑):
image

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

编辑区域的定义

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

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

参考链接:控制Word编辑区域(局部编辑)

标签:uos,Word,wordDoc,编辑,国产,区域,合同,PO
From: https://www.cnblogs.com/qq742655/p/18235253

相关文章

  • 搬运文档+个人总结:FPGA和ZYNQ的上电启动时序(编辑中)
    ZYNQ的上电时序主要参考的UG585。PS_POR_B复位引脚解除断言后,硬件立即对引导带引脚进行采样,并可选择启用PS时钟PLL。然后,PS开始执行片上ROM中的BootROM代码以启动系统。POR会重置整个设备,而不会保存先前的状态。非POR类型的复位也会导致BootROM执行,但硬件不会对......
  • CS8406国产替代DP7406数字音频发射芯片I2S转S/PDIF/AES同轴输出芯片
    192K数字音频应用采样率192khz,能将192,000hz以下的频率都录下来,而且对声波每秒连续采样192,000次。在回放的时候,这192,000个采样点按顺序播放,从而还原原来的声音。过采样技术除了能让很微观的角度上让声音更连续以外,在对声音进行一些特殊处理时,更不容易失真/出现杂音。48k......
  • OM6626国产BLE5.3高性能低功耗蓝牙SoC芯片
    OM6626简介OM6626是功能强大、性能稳定、超低功耗的国产蓝牙SoC芯片,适用于各种低功耗蓝牙和专有的2.4GHz应用场景。OM6626还集成了电源管理单元(PMU),可提供高效电源管理。可实现从小体积医疗监测到低功耗智能穿戴等健康监测设备,从SmartTag(物品追踪器)到高性能电脑键鼠等生活便利......
  • 国产算力资源大比拼
    国产算力资源大比拼一、华为昇腾系列核心技术:昇腾AI芯片:CANN(ComputeArchitectureforNeuralNetworks):这是华为自主研发的异构计算高性能编程接口,对标NVIDIA的CUDA。CANN架构分为5层,覆盖从底层OS到服务层编程语言的全面优化,包括编译优化、网络优化、算子优化等。Ascend......
  • 在 Jupyter 编辑函数(Edit function in Jupyter)
    在JupyterNotebook里编辑一个已经存在的函数是可以实现的。你需要重新定义这个函数并执行该单元格。这将覆盖之前的定义,使用新的代码。例如,如果你有一个函数fetch_california_housing,你可以按照以下步骤编辑和重新定义它:找到该函数的定义单元格,或者创建一个新的单元格......
  • vue-codemirror代码编辑器使用
    参考链接:vue2导入使用vue-codemirror详解-CSDN博客1.安装vue-codemirrornpmivue-codemirror//codemirror需要与vue-codemirror同时安装npmicodemirror2.使用codemirror组件<template> <divclass="code-box">  <codemirror   ref="codeMirror......
  • CS8406国产兼容替代芯片DP7406数字音频I2S转SPDIF/AES3同轴输出芯片
    模拟音频传输VS数字音频传输模拟音频传输效果模拟音频传输特点:直观且容易实现,但相对会出现失真、不稳定的情况。数字音频传输效果数字音频传输特点:经过数字手段记录、存储、编辑、压缩或播放声音处理,采样率和量化等级越高,模数转换的精度就越高,对信号的还原能力就越强。D......
  • 含税仅498元起!复旦微ARM + FPGA SoC全国产工业核心板,性价比真高!
     ......
  • 可编辑表格
    <!--子组件--><template> <el-formref="formChild":model="form":disabled="isDisabled">  <el-tableref="table":data="form.contents"size="mini"border>   <el-......
  • 在线编辑涉密的Word文档,只读/禁止编辑/禁止复制/禁止另存/禁止打印
    在日常办公环境中,保密信息的安全性是至关重要的,我们经常会需要在线预览编辑涉密的Word文档,但是又要求这些涉密的文档只能看,只读打开/禁止编辑/禁止复制/禁止另存/禁止打印,这时候该如何实现呢?猿大师办公助手可以帮您做到这些!  猿大师办公助手可以把本地微软Office或者金山WPS......