java 导出word锁定且部分内容解锁可编辑
使用 Apache POI 创建带编辑限制的 Word 文档
在日常工作中,我们可能需要生成一些带有编辑限制的 Word 文档,例如某些段落只能被查看,而其他段落可以自由编辑。本文介绍如何使用 Apache POI 创建这样的文档,并通过代码实现相应的编辑权限。
示例代码
以下代码演示了如何使用 Apache POI 设置 Word 文档的部分段落为只读,同时创建可以自由编辑的区域。
import org.apache.poi.wp.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.poifs.crypt.HashAlgorithm;import java.io.FileOutputStream;
import java.util.Random;public class WordEditingRestriction {public static void main(String[] args) throws Exception {XWPFDocument document = new XWPFDocument();// 创建一个不可编辑的段落XWPFParagraph lockedParagraph = document.createParagraph();XWPFRun lockedRun = lockedParagraph.createRun();lockedRun.setText("本段已被程序锁定,解锁密码是000000。");// 创建可编辑区域createEditableRegion(document, "这是可以自由编辑的区域");// 再添加一个不可编辑的段落XWPFParagraph anotherLockedParagraph = document.createParagraph();XWPFRun anotherLockedRun = anotherLockedParagraph.createRun();anotherLockedRun.setText("这也是被锁定的内容。");// 设置文档编辑限制document.enforceReadonlyProtection("000000", HashAlgorithm.sha512);String outputPath = "/Users/wtm/Desktop/output/" + System.currentTimeMillis() + ".docx";try (FileOutputStream out = new FileOutputStream(outputPath)) {document.write(out);}System.out.println("Word document created with editing restrictions.");}/*** 创建可编辑区域。** @param document Word 文档对象* @param text 可编辑区域中的文本内容*/private static void createEditableRegion(XWPFDocument document, String text) {// 随机生成一个唯一的权限 IDString id = String.valueOf(new Random().nextInt());// 选择一个段落,创建运行对象并设置文本XWPFParagraph paragraph = document.createParagraph();XWPFRun run = paragraph.createRun();run.setText(text);// 获取段落和运行的底层 XML 节点Node paragraphNode = paragraph.getCTP().getDomNode();Node runNode = run.getCTR().getDomNode();// 添加权限开始标记CTPermStart permStart = paragraph.getCTP().addNewPermStart();permStart.setId(id); // 设置权限 IDpermStart.setEdGrp(STEdGrp.EVERYONE); // 设置编辑权限为所有人Node permStartNode = permStart.getDomNode();// 添加权限结束标记CTPerm permEnd = paragraph.getCTP().addNewPermEnd();permEnd.setId(id); // 设置权限 IDNode permEndNode = permEnd.getDomNode();// 将权限开始标记插入到段落节点中运行节点之前paragraphNode.insertBefore(permStartNode, runNode);// 将权限结束标记插入到段落节点中运行节点的下一个兄弟节点之前paragraphNode.insertBefore(permEndNode, runNode.getNextSibling());}
}
导出效果

相关文章:
java 导出word锁定且部分内容解锁可编辑
使用 Apache POI 创建带编辑限制的 Word 文档 在日常工作中,我们可能需要生成一些带有编辑限制的 Word 文档,例如某些段落只能被查看,而其他段落可以自由编辑。本文介绍如何使用 Apache POI 创建这样的文档,并通过代码实现相应的…...
SQL 在线格式化 - 加菲工具
SQL 在线格式化 打开网站 加菲工具 选择“SQL 在线格式化” 或者直接访问 https://www.orcc.online/tools/sql 输入sql,点击上方的格式化按钮即可 输入框得到格式化后的sql结果...
大数据法律法规——《关键信息基础设施安全保护条例》(山东省大数据职称考试)
大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 大数据法律法规…...
【CVE-2024-5660】ARM CPU漏洞:硬件页面聚合(HPA)安全通告
安全之安全(security)博客目录导读 目录 一、概述 二、修改历史 三、什么是硬件页面聚合? 四、修复解决 一、概述 在一些基于arm的cpu中发现了一个问题,该问题可能允许修改的、不受信任的客户机操作系统...
数智读书笔记系列008 智人之上:从石器时代到AI时代的信息网络简史
书名:智人之上:从石器时代到AI时代的信息网络简史 作者:[以]尤瓦尔赫拉利 译者:林俊宏 出版时间:2024-09-01 ISBN:9787521768527 中信出版集团制作发行 作者信息 尤瓦尔・赫拉利 1976 年出生于以色列海法,是牛津大学历史学…...
将 Ubuntu 22.04 LTS 升级到 24.04 LTS
Ubuntu 24.04 LTS 将支持 Ubuntu 桌面、Ubuntu 服务器和 Ubuntu Core 5 年,直到 2029 年 4 月。 本文将介绍如何将当前 Ubuntu 22.04 系统升级到最新 Ubuntu 24.04 LTS版本。 备份个人数据 以防万一,把系统中的重要数据自己备份一下~ 安装配置SSH访问…...
【自动驾驶】Ubuntu20.04安装ROS1 Noetic
【自动驾驶】Ubuntu20.04安装ROS1 Noetic 方式一:官方教程方式二:鱼香ROS脚本安装ROS配置rosdep配置ROS环境 测试ROS1 Noetic是否安装成功 方式一:官方教程 https://wiki.ros.org/noetic/Installation/Ubuntu 方式二:鱼香ROS脚本 …...
(转,自阅,侵删)【LaTeX学习笔记】一文入门LaTeX(超详细)
【LaTeX学习笔记】一文入门LaTeX(超详细)-阿里云开发者社区LaTeX中主要分为导言区和正文区导言区通常用于定义文档的格式、语言等(全局设置)。常用的LaTex命令主要有\documentclass,\usepackage等。下面分别对几个常用…...
css的选择器有哪些?权重由大到小是怎么排序的?
CSS选择器有很多种,下面是常见的选择器类型,并按照其权重(即优先级)从高到低进行排序。 CSS选择器类型 通用选择器 (*) (通配符选择器) 选择所有元素,权重最低。 例如:* { color:…...
CTF知识集-PHP特性
title: CTF知识集-PHP特性 写在开头可能会用到的提示 call_user_func 调用的函数可以不区分大小写preg_match过滤存在长度溢出,长度超过100w检测失效。str_repeat(‘show’,250000); 生成100w个字符preg_match是无法处理数组的,例如:preg_match( n u m…...
比特币是否会取代美元(以及其他主权货币)
上图是 Olivier Blanchard 宏观经济学第八版的英文版内容。这里用中文解释。 1. 背景与现状: 比特币的规模与美元相比仍然很小: 截至 2018 年 12 月,比特币的总流通量为 1730 万枚,每枚价值 $3,900,总市值约 $670 亿…...
WPF+MVVM案例实战与特效(三十七)- 实现带有水印和圆角的自定义 TextBox 控件
文章目录 1、概述2、案例实现1、基本功能2、代码实现3、控件应用4、案例效果4、总结1、概述 在开发用户界面时,TextBox 是最常见的输入控件之一。为了提升用户体验,我们经常需要为 TextBox 添加一些额外的功能,例如显示提示文本(水印)和设置圆角边框。本文将详细介绍如何…...
深度学习训练参数之学习率介绍
学习率 1. 什么是学习率 学习率是训练神经网络的重要超参数之一,它代表在每一次迭代中梯度向损失函数最优解移动的步长,通常用 η \eta η 表示。它的大小决定网络学习速度的快慢。在网络训练过程中,模型通过样本数据给出预测值࿰…...
导游现场面试需要注意的问题
今天给大家带来一些导游现场面试需要注意的问题,大部分的城市导游考试已经考完了,但是还有一些城市的十二月份才考,有需要的朋友们赶紧来看,有备无患。 01、做好充足准备 认真准备做好每个景点的讲解介绍,不要抱有侥幸…...
Burp suite 3 (泷羽sec)
声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面,了解网络安全领域的见闻,了…...
LabVIEW前面板无法显示的常见原因
当 LabVIEW 前面板显示为白色或黑色时,可能由于控件可视性设置、显卡驱动问题、程序错误或 LabVIEW 设置不当引起。通过检查面板设置、更新驱动、重启程序等方式可有效解决此问题。 遇到前面板无法显示或显示为白色/黑色的情况,可能有以下几种原因。可以…...
【Syncfusion系列】Diagram 杂谈 第三篇 序列化和反序列化
目录 序列化保存C# 代码示例, 方式1 :C# 代码示例, 方式2 : 反序列化加载C# 代码示例, 方式1:C# 代码示例, 方式2: **如何序列化自定义属性**序列化和反序列化都存在的一个问题解决方式 图表是否已修改&…...
Apache APISIX快速入门
本文将介绍Apache APISIX,这是一个开源API网关,可以处理速率限制选项,并且可以轻松地完全控制外部流量对内部后端API服务的访问。我们将看看是什么使它从其他网关服务中脱颖而出。我们还将详细讨论如何开始使用Apache APISIX网关。 在深入讨…...
【经典】制造供应链四类策略(MTS、MTO、ATO、ETO)细说
关注作者 制造供应链的牛鞭问题与复杂问题主要是从两个方面解决,一是同步化供应链消减从需求到供应的放大效应,二是供应链细分,针对不同的客户、不同的需求供应的匹配策略来应对复杂性,更好的满足客户并以最低的总成本来实现。 对…...
基于stm32的红外测温系统设计(论文+源码)
1总体方案设计 本课题为基于STM32的红外测温系统设计,在此将系统架构设计如图3.1所示, 整个系统包括STM32F103单片机,红外测温模块MLX90614,显示模块OLED12864,蜂鸣器以及按键等构成,在功能上,…...
大模型“语言翻译官“Token深度解析:从人类语言到机器密码的惊险旅程!
本文深入浅出地介绍了大模型如何通过Token(词元)这一关键组件将人类自然语言翻译成机器能理解的数字密码。文章从Token的来源、生成全过程(分词、数字化映射、向量化、矩阵运算、采样解码)以及四种主流分词方案(BPE、W…...
2026届学术党必备的五大AI辅助写作网站推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下这个学术写作的场景范围里,论文AI工具已然变成辅助研究者去完成文献梳理的…...
空间多组学解决方案发展提速:未来六年CAGR锁定15.3%,行业增长预期持续向好
在生命科学领域,精准医学和个性化治疗的需求日益增长,对生物组织和细胞在空间维度上的深入理解成为关键。空间多组学解决方案作为这一需求的核心支撑技术,正受到全球科研和产业界的广泛关注。据恒州诚思调研统计,2025年全球空间多…...
CSS动画实战:5分钟搞定微信语音发送震动效果(附完整代码)
CSS动画实战:5分钟实现语音波形震动效果 最近在做一个社交类项目时,产品经理突然提出要在语音消息发送时加入波形动画效果,要求"要有微信那种专业感"。作为前端开发者,我第一反应就是:这得用Canvas吧&#x…...
用MATLAB搞定模电实验:单管共射放大电路静态工作点与放大倍数的保姆级仿真
MATLAB仿真单管共射放大电路:从理论到实践的完整指南 引言 在电子工程领域,单管共射放大电路是模拟电路设计的基石之一。传统实验教学中,学生往往需要花费大量时间搭建实体电路、调整参数并测量数据,这不仅效率低下,…...
大数据标注工具对比:2023年最值得推荐的5款工具
大数据标注工具对比:2023年最值得推荐的5款工具关键词:大数据标注工具、2023年推荐、工具对比、标注效率、标注质量摘要:本文聚焦于2023年大数据标注领域,详细对比了五款极具代表性的大数据标注工具。通过对它们的核心概念、算法原…...
别再傻傻分不清了!一文搞懂HIS、LIS、PACS这些医院里的‘系统天团’
医疗信息化系统全解析:从HIS到PACS的协同作战指南 第一次走进医院信息中心时,那些闪烁的服务器和此起彼伏的术语让我头晕目眩——HIS、LIS、PACS...它们就像医院里的"复仇者联盟",每个系统都是独特的超级英雄,但又必须完…...
H5与原生App高效通信:DSBridge桥方法实战解析
1. 为什么需要DSBridge? 在混合开发中,H5页面经常需要调用摄像头、地理位置等原生功能,而原生App也需要获取H5页面的数据更新。传统通信方式(如URL Scheme拦截)存在三个痛点:协议维护成本高(需…...
《Linux网络编程》2.Socket编程(UDP/TCP)
💡Yupureki:个人主页 ✨个人专栏:《C》 《算法》《Linux系统编程》《高并发内存池》《MySQL数据库》 《个人在线OJ平台》《Linux网络编程》 🌸Yupureki🌸的简介: 目录 1. UDP编程 1.1 常用接口 1.1.1 socket() – 创建套接字 1.1.2 bin…...
项目介绍 MATLAB实现基于概率路图法(PRM)进行无人机三维路径规划的详细项目实例(含模型描述及部分示例代码) 专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励是我前行的动力 谢谢支持
MATLAB实现基于概率路图法(PRM)进行无人机三维路径规划的详细项目实例 更多详细内容可直接联系博主本人 或者访问对应标题的完整博客或者文档下载页面(含完整的程序,GUI设计和代码详解) 随着无人机技术的快速发展&…...
