WPS Office JS宏实现批量处理Word中的标题和正文的样式
该篇讲解下word文档中的标题和正文批量修改样式,如下图:
前面一篇已讲解了WPS Office宏编辑器操作方法,这里不细讲了,如有不清楚可以查看该篇:https://blog.csdn.net/jiciqiang/article/details/134653657?spm=1001.2014.3001.5501文章浏览阅读363次。WPS Office JS宏,实现Word表格样式批量修改。 由于本职工作原因,经常会用到office办公软件,经常很多内容审批后,需要统一修改内容或样式,如果Word文档中有上百页或上千页,则一个一个修改太麻烦了。在接触到WPSJS宏后,发现工作效率大大提升;如果你会前端开发,有JS基础上手会非常快;如果有VBA基础,就更得心应手了,因为对象和函数定义,基础是沿用office的VBA。其他不多说了,先和大家分享下如果统一修改表格样式。https://blog.csdn.net/jiciqiang/article/details/134653657?spm=1001.2014.3001.5501
一、修改标题
1.1 Paragraphs 对象
在编写代码前,咱们先了解下Paragraphs对象的属性和方法。
方法:
名称 | 说明 | |
---|---|---|
1 | Add | 返回一个 Paragraph 对象,该对象代表添加到文档中的新的空白段落。 |
2 | Indent | 为一个或多个段落增加一个级别的缩进。 |
3 | IndentFirstLineCharWidth | 将一个或多个段落的首行缩进指定的字符数。 |
属性:
名称 | 说明 | |
---|---|---|
1 | AddSpaceBetweenFarEastAndAlpha | 如果 WPS 将自动在指定段落的日文和拉丁文文字之间添加空格,则该属性值为 True。如果仅对于某些指定段落将该属性设置为 True,则该属性会返回 wdUndefined。Long 类型,可读写。 |
2 | AddSpaceBetweenFarEastAndDigit | 如果 WPS 将自动在指定段落的日文文字和数字之间添加空格,则该属性值为 True。如果仅对于某些指定段落将该属性设置为 True,则该属性会返回 wdUndefined。Long 类型,可读写。 |
3 | Alignment | 返回或设置一个 WdParagraphAlignment 常量,该常量代表指定段落的对齐方式,可读写。 |
4 | Application | 返回一个代表 WPS 应用程序的 Application 对象。 |
5 | AutoAdjustRightIndent | 如果 WPS 会根据您指定的每行字符数自动调整指定段落的右缩进,则该属性值为 True。如果只将某些指定段落的 AutoAdjustRightIndent 属性设置为 True,则该属性会返回 wdUndefined。Long 类型,可读写。 |
6 | BaseLineAlignment | 返回或设置一个 WdBaselineAlignment 常量,该常量代表行中字体的垂直位置,可读写。 |
7 | Borders | 返回一个 Borders 集合,该集合代表指定对象的所有边框。 |
8 | CharacterUnitFirstLineIndent | 返回或设置首行或悬挂缩进的值(以字符为单位)。用正值设置首行缩进,用负值设置悬挂缩进。Single 类型,可读写。 |
9 | CharacterUnitLeftIndent | 该属性返回或设置指定段落的左缩进量(以字符为单位)。Single 类型,可读写。 |
10 | CharacterUnitRightIndent | 该属性返回或设置指定段落的右缩进量(以字符为单位)。Single 类型,可读写。 |
11 | Count | 返回一个 Long 类型的值,该值代表集合中的段数。只读。 |
12 | Creator | 返回一个 32 位整数,该整数代表在其中创建特定对象的应用程序。只读 Long 类型。 |
13 | DisableLineHeightGrid | 如果该属性的值为 True,则当指定每页的行数时,WPS 会将指定段落中的字符与行网格对齐。如果只将某些指定段落的 DisableLineHeightGrid 属性设置为 True,则返回 wdUndefined。Long 类型,可读写。 |
14 | FarEastLineBreakControl | 如果为 True,则 WPS 会将东亚语言文字的换行规则应用于指定的段落。如果只将某些指定段落的 FarEastLineBreakControl 属性设定为 True,则返回 wdUndefined。Long 类型,可读写。 |
15 | First | 返回一个 Paragraph 对象,该对象代表在 Paragraphs 集合中的第一个项目。 |
16 | FirstLineIndent | 返回或设置首行缩进或悬挂缩进的大小(以磅值表示)。用正数设置首行缩进的尺寸,用负数设置悬挂缩进的尺寸。Single 类型,可读写。 |
17 | Format | 返回或设置一个 ParagraphFormat 对象,该对象代表指定的一个或多个段落的格式。 |
18 | HalfWidthPunctuationOnTopOfLine | 如果为 True,则 WPS 会将指定段落行首的标点符号改为半角字符。如果仅将某些指定段落的该属性设置为 True,则此属性将返回 wdUndefined。Long 类型,可读写。 |
19 | HangingPunctuation | 如果为 True,则指定段落中的标点将可以溢出边界。如果仅将某些指定段落的该属性设置为 True,则返回 wdUndefined。Long 类型,可读写。 |
20 | Hyphenation | 如果指定的段落进行自动断字,则该属性值为 True。如果指定的段落不进行自动断字,则该属性值为 False。可读写 Long 类型。 |
21 | KeepTogether | 在 WPS 对文档重新分页时,如果指定段落中的所有行都位于同一页上,则该属性值为 True。可读写 Long 类型。 |
22 | KeepWithNext | 在 WPS 对文档重新分页时,如果指定段落与其下一段位于同一页上,则该属性值为 True。可读写 Long 类型。 |
23 | Last | 返回一个 Paragraph 对象,该对象代表段落集合中的最后一个项目。 |
24 | LeftIndent | 返回或设置一个 Single 类型的值,该值代表指定段落的左缩进值(以磅为单位)。可读写。 |
25 | LineSpacing | 返回或设置指定段落的行距(以磅为单位)。Single 类型,可读写。 |
26 | LineSpacingRule | 返回或设置指定段落的行距。可读写 WdLineSpacing 类型。 |
27 | LineUnitAfter | 返回或设置指定段落的段后间距(以网格线为单位)。可读写 Single 类型。 |
28 | LineUnitBefore | 返回或设置指定段落的段前间距(以网格线为单位)。可读写 Single 类型。 |
29 | NoLineNumber | 如果取消指定段的行号,则该属性值为 True。该属性值可以是 True、False 或 wdUndefined。可读写 Long 类型。 |
30 | OutlineLevel | 返回或设置指定段落的大纲级别。可读写 WdOutlineLevel 类型。 |
31 | PageBreakBefore | 如果在指定段落前插入了分页符,则该属性值为 True。该属性值可以是 True、False 或 wdUndefined。可读写 Long 类型。 |
32 | Parent | 返回一个 Object 类型值,该值代表指定 Paragraphs 对象的父对象。 |
33 | ReadingOrder | 返回或设置指定段落的读取次序而不改变其对齐方式。可读写 WdReadingOrder 类型。 |
34 | RightIndent | 返回或设置指定段落的右缩进量(以磅为单位)。可读写 Single 类型。 |
35 | Shading | 返回一个 Shading 对象,该对象代表指定段落的底纹格式。 |
36 | SpaceAfter | 返回或设置指定段落或文本栏后面的间距(以磅为单位)。可读/写 Single 类型。 |
37 | SpaceAfterAuto | 如果 WPS 自动设置指定段落的段后间距,则该属性为 True。可读/写 Long 类型。 |
38 | SpaceBefore | 返回或设置指定段落的段前间距(以磅为单位)。可读/写 Single 类型。 |
39 | SpaceBeforeAuto | 如果 WPS 自动设置指定段落的段前间距,则该属性为 True。可读/写 Long 类型。 |
40 | Style | 返回或设置指定段落的样式。可读写 Variant 类型。 |
41 | TabStops | 返回或设置一个 TabStops 集合,该集合代表指定段落中的所有自定义制表位。可读写。 |
42 | WidowControl | 在 WPS 对文档重新分页时,如果指定段落的首行和末行与段落的其他各行同页,则该属性值为 True。该属性值可以是 True、False 或 wdUndefined。可读写 Long 类型。 |
43 | WordWrap | 如果 WPS 在指定段落中的西文单词中间断字换行,则该属性值为 True。可读写 Long 类型。 |
1.2 获取内容段落数
上篇讲过表格获取数量是通过Count属性,这里同样是通过Count获取内容的段落数,代码如下:
/*** 修改标题和正文样式*/
function 修改标题和正文样式(){console.log(ActiveDocument.Paragraphs.Count);
}
输出结果如下图:
1.3 获取段落样式
这里得到段落数后,我们则可以循环获取所有段落内容,并通过段落属性Style判断出标题部分,进行样式调整。代码如下:
/*** 修改标题和正文样式*/
function 修改标题和正文样式(){// 循环获取段落信息for(var i = 1; i <= ActiveDocument.Paragraphs.Count; i++){// 获取每个段落范围的内容var rangeObj = ActiveDocument.Paragraphs.Item(i).Range;// console.log(rangeObj.Style.toString());}}
输出结果:
如上图所示,很容易判断出哪些范围为标题,哪些为正文。当然,有时会出现返回样式值为空情况,这里则需要做下容错处理,代码如下:
/*** 修改标题和正文样式*/
function 修改标题和正文样式(){// 循环获取段落信息for(var i = 1; i <= ActiveDocument.Paragraphs.Count; i++){// 获取每个段落范围的内容var rangeObj = ActiveDocument.Paragraphs.Item(i).Range;// 获取范围样式var styleName = rangeObj.Style;// 如果样式返回结果为空,则继续循环下一个if(!styleName) continue;styleName = styleName.toString();console.log(styleName);}
}
1.4 过滤出标题段落
现在通过switch来过滤出对应的标题段落内容,另外不同文档中标题样式名不一定叫“标题 1”、“标题 2” 等,根据分析出的数据,作对应调整即可。这里只到2级标题,所以不作过深层次筛选,代码如下:
/*** 修改标题和正文样式*/
function 修改标题和正文样式(){// 循环获取段落信息for(var i = 1; i <= ActiveDocument.Paragraphs.Count; i++){// 获取每个段落范围的内容var rangeObj = ActiveDocument.Paragraphs.Item(i).Range;// 获取范围样式var styleName = rangeObj.Style;// 如果样式返回结果为空,则继续循环下一个if(!styleName) continue;styleName = styleName.toString();// 过滤出标题段落switch(styleName){case '标题 1': console.log(styleName);break;case '标题 2': console.log(styleName);break;case '标题 3': console.log(styleName);break;}}
}
输出结果:
1.5 增加修改样式函数
这里增加一个修改样式的单独功能函数,这是因为减少代码冗余量,代码如下:
/*** 修改样式*/
function editStyle(rangeObj, name, size){// 选择当前内容rangeObj.Select();// 设置字段样式(font => {font.Size = size;font.Name = name;font.Blod = true;})(Selection.Font);
}
1.6 修改标题样式
前期准备工作做完后,现在则可以正式修改标题样式了,代码如下:
/*** 修改样式*/
function editStyle(rangeObj, name, size){// 选择当前内容rangeObj.Select();// 设置字段样式(font => {font.Size = size;font.Name = name;font.Blod = true;})(Selection.Font);
}/*** 修改标题和正文样式*/
function 修改标题和正文样式(){// 循环获取段落信息for(var i = 1; i <= ActiveDocument.Paragraphs.Count; i++){// 获取每个段落范围的内容var rangeObj = ActiveDocument.Paragraphs.Item(i).Range;// 获取范围样式var styleName = rangeObj.Style;// 如果样式返回结果为空,则继续循环下一个if(!styleName) continue;// styleName = styleName.toString();// 过滤出标题段落switch(styleName){case '标题 1': editStyle(rangeObj, "黑体", 16);break;case '标题 2': editStyle(rangeObj, "楷体", 16);break;case '标题 3': editStyle(rangeObj, "仿宋", 14);break;}}
}
点击运行宏,如下图:
运行结束后,查看文档,则标题根据设置样式修改完成了,如下图:
二、修改正文
这里细心朋友可能就发现了,修改“正文”内容就很简单了,直接在switch中增加一个case判断即可,代码如下:
/*** 修改标题和正文样式*/
function 修改标题和正文样式(){// 循环获取段落信息for(var i = 1; i <= ActiveDocument.Paragraphs.Count; i++){// 获取每个段落范围的内容var rangeObj = ActiveDocument.Paragraphs.Item(i).Range;// 获取范围样式var styleName = rangeObj.Style;// 如果样式返回结果为空,则继续循环下一个if(!styleName) continue;//styleName = styleName.toString();// 过滤出标题段落switch(styleName){case '标题 1': editStyle(rangeObj, "黑体", 16);break;case '标题 2': editStyle(rangeObj, "楷体", 16);break;case '标题 3': editStyle(rangeObj, "仿宋", 14);break;case '正文': editStyle(rangeObj, "宋体", 12);break;}}
}
运行结束后,标题和样式都根据代码中设定的样式,进行更新了,文档效果如下:
相关文章:

WPS Office JS宏实现批量处理Word中的标题和正文的样式
该篇讲解下word文档中的标题和正文批量修改样式,如下图: 前面一篇已讲解了WPS Office宏编辑器操作方法,这里不细讲了,如有不清楚可以查看该篇:https://blog.csdn.net/jiciqiang/article/details/134653657?spm1001.20…...

论文怎么改才能降低重复率
一、引言:智能工具助力,轻松降低论文重复率 论文的重复率是学术写作中的重要问题,如何有效降低重复率成为了许多研究者的关注焦点。如今,智能工具的发展为我们提供了更多选择。本文将介绍几种实用的智能工具,包括快码…...

【从零开始学习JVM | 第六篇】快速了解 直接内存
前言: 当谈及Java虚拟机(JVM)的内存管理时,我们通常会想到堆内存和栈内存。然而,还有一种被称为"直接内存"的特殊内存区域,它在Java应用程序中起着重要的作用。直接内存提供了一种与Java堆内存和…...

Wireshark中的http协议包分析
Wireshark可以跟踪网络协议的通讯过程,本节通过http协议,在了解Wireshark使用的基础上,重温http协议的通讯过程。 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于 字节流…...

ubuntu如何远程ssh登录Windows环境并执行测试命令
ubuntu如何远程ssh登录Windows环境并执行测试命令 1 paramiko模块简介1.1 安装paramiko1.2 paramiko基本用法1.2.1 创建SSHClient实例1.2.2 设置主机密钥策略1.2.3 连接SSH服务器1.2.4 执行命令1.2.5 关闭SSH连接1.2.6 异常处理 2 windows的配置2.1 启动OpenSSH服务2.2 配置防火…...
人工智能应用专栏----专栏介绍
文章目录 本专栏主要记录人工智能的应用方面的内容,包括chatGPT、AI绘图等等; 订阅后可私聊我获取 《从零注册并登录使用ChatGPT》 《从零开始使用chatGPT的API;通过chatgpt-next-web部署自己chatGPT web网页;无需翻墙,…...

【lesson11】表的约束(4)
文章目录 表的约束的介绍唯一键约束测试建表插入测试建表插入测试建表插入测试修改表插入测试 表的约束的介绍 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保…...

将单体应用程序迁移到微服务
多年来,我处理过多个单体应用,并将其中一些迁移到了微服务架构。我打算写下我所学到的东西以及我从经验中用到的策略,以实现成功的迁移。在这篇文章中,我将以AWS为例,但基本原则保持不变,可用于任何类型的基…...

Python读取.dat格式数据并转为.png,.jpg,.bmp等可视化格式(附代码)
.dat文件的命名规则没有统一的规定,但通常以.dat为扩展名。 目录 一、 .dat格式数据1.1 .dat数据用途1.2 常见的.dat文件格式1.3 .dat文件示例 二、读取.dat格式数据2.1 单个.dat文件读取并转换2.1.1 代码2.1.2 查看数据2.1.3 输出查看8Bit图片 2.2 批量.dat文件读取…...

matplotlib 默认属性和绘图风格
matplotlib 默认属性 一、绘图风格1. 绘制叠加折线图2. Solarize_Light23. _classic_test_patch4. _mpl-gallery5. _mpl-gallery-nogrid6. bmh7. classic8. fivethirtyeight9. ggplot10. grayscale11. seaborn12. seaborn-bright13. seaborn-colorblind14. seaborn-dark15. sea…...
ip地址怎么转化为十进制
IP地址是在计算机网络中广泛使用的一种标识符,它用于唯一地标识网络上的设备。在网络通信过程中,IP地址扮演着非常重要的角色。但是,对于一些非专业人士来说,IP地址可能是一个陌生的概念。为了更好地理解IP地址,本文…...

【Spring进阶系列丨第五篇】详解Spring中的依赖注入
文章目录 一、说明二、构造函数注入2.1、方式一【index索引方式】2.1.1、定义Bean2.1.2、主配置文件中配置Bean2.1.3、测试 2.2、方式二【indextype组合方式】2.2.1、定义Bean2.2.2、主配置文件配置Bean2.2.3、测试2.2.4、解决方案 2.3、方式三【name方式】2.3.1、定义Bean2.3.…...

DAP数据集成与算法模型如何结合使用
企业信息化建设会越来越完善,越来越体系化,当今数据时代背景下更加强调、重视数据的价值,以数据说话,通过数据为企业提升渠道转化率、改善企业产品、实现精准运营,为企业打造自助模式的数据分析成果,以数据…...
大数据监控
HBase 监控 {name“RegionServer”,sub“Server”,} irate(hadoop_hbase_totalrequestcount[5m]) irate(hadoop_hbase_totalrequestcount{instanceName“hacluster4”}[2m]) https://blog.csdn.net/Samooyou/article/details/129275640 https://www.tencentcloud.com/zh/doc…...

【C语言】数据结构——小堆实例探究
💗个人主页💗 ⭐个人专栏——数据结构学习⭐ 💫点击关注🤩一起学习C语言💯💫 导读: 我们在前面学习了单链表和顺序表,以及栈和队列。 今天我们来学习小堆。 关注博主或是订阅专栏&a…...
Vue中比较两个JSON对象的差异
要在Vue.js中实现JSON数据的对比差异功能,你可以使用一些库来简化任务,比如diff-match-patch。以下是一个简单的例子,演示如何使用deep-diff库在Vue.js中比较两个JSON对象的差异: 首先,确保你的项目中已经安装了diff-m…...
前端知识库Html5和CSS3
1、常见的水平垂直居中实现方案 最简单的方案是flex布局 .container{display: flex;align-items: center;justify-content: center; }绝对定位配合margin:auto(一定要给.son宽高) .father {position: relative;height: 300px; } .son {position: absolute;top: 0;right: 0;b…...

智能优化算法应用:基于鸡群算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于鸡群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于鸡群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鸡群算法4.实验参数设定5.算法结果6.参考文献7.MA…...

Apollo配置发布原理解析
📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…...
TrustGeo论文问题理解
1、网络空间测绘中,如何理解地标? 在网络空间测绘中,地标可以理解为在互联网空间中具有明显特征和稳定性的实体,它们可以作为网络空间的基准点,用于定位和标识其他网络实体。地标通常是在网络空间中具有较高价值和影响…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...