python 操作word库docx 增强接口
前言
用python 的docx 库操作word完成一些自动化的文档生成工作,但有时候会遇到docx库提供的操作无法直接满足业务上的需求,需要对其进行一些扩展。
接口完善实现
在指定的文字后面插入指定的文字
任务:以下示例需要在文档中的所有 "人生苦短" 后面插入文字 ",我用python!",并且希望插入后的文字与插入点前面的样式保持一致。
分析:通过在段落中用paragraph.text去搜索目标字符串 "人生苦短",然后再指定位置新增加一个run,并且在该run中写入 ",我用python!"。但是需要给新增加的run赋予它前面一个run的样式。由于目标字符串 "人生苦短"的格式在段落中可能并不一致,所以还需要定位到 "人生苦短"四个字符最后一个所在的run。
实现:见demo1
下图是原始的文档样式:

下图是经过插入后的文档样式,插入的文字与插入点上一个run的格式保持了一致。

复制带样式的段落
任务:以下示例需要对文档中的一个段落进行复制,然后插入到其他指定的位置。被复制的段落里面的文字具有某些样式,希望复制之后这些样式得以保存。
分析:由于需要保持样式,显然不能直接获取到原段落的text然后重新创建一个paragraph到指定的位置。
实现:见demo2
这是复制之前的文档:

这是复制之后的文档,将源段落的内容和样式完全复制到新段落。

3.删除段落
#从文档中删除段落paragraph
def delete_paragraph(paragraph):p = paragraph._elementp.getparent().remove(p)paragraph._p = paragraph._element = None4.插入段落
def move_paragraph_after(para1,para2):'''移动p1段落到p2段落后面'''p1,p2=para1._p,para2._pp2.addnext(p1)#在指定的段落pa前面插入段落
pa.insert_paragraph_before(text=None, style=None)#在指定的段落pa后面插入段落
def insert_paragraph_after(paragraph,text=None):'''在指定的段落后面创建段落'''para=paragraph.insert_paragraph_before(text)move_paragraph_after(para,paragraph)return para5.插入题注与交叉引用题注
见demo3
下面是插入题注和交叉引用之前的文档:

下面是插入题注和交叉引用之后的文档

资源
本文样例的word操作接口均为本人研究docx库然后自行完善得到,基本上拿来参考可用,少量接口实现依旧不够完善,后续改进中。给有需要的同志们,共勉!
链接:https://pan.baidu.com/s/1gLGAIWSKc372uB_oz2iX2Q?pwd=ptty
提取码:ptty
相关文章:
python 操作word库docx 增强接口
前言用python 的docx 库操作word完成一些自动化的文档生成工作,但有时候会遇到docx库提供的操作无法直接满足业务上的需求,需要对其进行一些扩展。接口完善实现在指定的文字后面插入指定的文字任务:以下示例需要在文档中的所有 "人生苦短…...
ARM uboot 源码分析9 - uboot的硬件驱动部分
一、uboot 与 linux 驱动 1、uboot 本身是裸机程序 (1) 裸机本来是没有驱动的概念的(狭义的驱动的概念就是,操作系统中用来具体操控硬件的那部分代码叫驱动) (2) 裸机程序中是直接操控硬件的,操作系统中必须通过驱动来操控硬件…...
Mybatis动态sql语句foreach中拼接正则表达式字符串注意事项
今天要说到的查询情况,平时项目里边其实用到的并不是很多,使用正则表达式无非是为了匹配结果比较灵活,最常见的,我们的查询条件一般一个参数仅仅只是一种情况的筛选,对于如何选择查询方式,主要还是要看前端…...
JVM内置锁synchronized关键字详解
目录 JVM内置锁synchronized关键字详解 设计同步器的意义 如何解决线程并发安全问题? synchronized原理详解 synchronized底层原理 synchronized在jdk1.6前后的变化【重点】 jdk小于1.6时 jdk>1.6时 轻量级锁何时升级为重量级锁??…...
【2021.12.25】xv6系统入门学习
【2021.12.28】为xv6系统添加一个开机密码 文章目录【2021.12.28】为xv6系统添加一个开机密码0、说明1、Ubuntu20上安装xv62、测试指令3、修改系统代码4、添加自己的程序命令0、说明 xv6 是 MIT 设计的一个教学型操纵系统。 记录Ubuntu上安装x86版本的xv6系统,为其…...
Linux内核4.14版本——drm框架分析(4)——crtc分析
目录 1. struct drm_crtc结构体 2. crtc相关的API 2.1 drm_crtc_init_with_planes 2.5 drm_mode_setcrtc 3. func的一些介绍 3.1 struct drm_crtc_helper_funcs 3.2 struct drm_crtc_funcs 4. 应用层的调用 4.1 drmModeSetCrtc (drmlib库里)---…...
用原生js手写分页功能
分页功能如下: 数据分页显示,每页显示若干条数据,默认当前页码为第一页。例如:每页5条数据,则第一页显示 1-5 条,第二页显示 6-10 条,依此类推。当页码为第一页时,上一页为禁用状态…...
CornerNet介绍
CornerNet: Detecting Objects as Paired Keypoints ECCV 2018 Paper:https://arxiv.org/pdf/1808.01244v2.pdf Code:GitHub - princeton-vl/CornerNet 摘要: 提出了一种single-stage的目标检测算法CornerNet,它把每个目标检…...
【SpringBoot】日志使用
默认配置 Spring Boot默认帮我们配置好了日志 //记录器Logger logger LoggerFactory.getLogger(getClass());Testpublic void contextLoads() {//System.out.println();//日志的级别;//由低到高 trace<debug<info<warn<error//可以调整输出的日志级…...
关于slice扩容性能损耗的探究
背景 如果让我评选最伟大的数据结构,在我心中答案只有两个,数组和哈希表,这两个是我的程序的重要组成部分,同时也是我饭碗的重要组成部分。slice和map简洁明了的API很容易让我们有一种他们提供了无限大的空间,可以…...
Java实现单向链表
✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:Java数据结构与算法 ǹ…...
3月4日,30秒知全网,精选7个热点
///印度最大供电商罕见于现货市场购煤,能源供应短缺成忧 据知情人士透露,这家印度国有发电公司计划在下周左右发布300万吨的招标 ///QQ音乐推出AIGC黑胶播放器 这是国内音乐行业首个运用AI技术,通过文字、图片指令快速生成不同风格的播放器…...
EXCEL-职业版本(2)
Excel-职业版本(2) 定位 1.如何快速定位到不连续的空值,填充为0 1.在任意空单元格里复制0 2.选中数据区域CtrlA 3.CtrlG 4.选择【定位条件】 5.选择【空值】 6.ctrlV 粘贴 即可 2.怎么一次性计算每个小组的数量 单价和金额的和? 1.选中…...
java中延时队列的实现
大家好,我是一名CRUD工程师,最近我朋友突然来问我如何实现延时队列,我脱口而出就是MQ。不过突然想到公司的项目好像用的是java的一个原生类。于是我就想着趁周末的时间好好的去探究一下各方法实现延时队列的优缺点。 延迟消息 延迟消息就是字…...
基于java的circle buffer的实现
总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 缓冲区示例什么是循环缓冲区?方法 1:使用数组插入元素删除元素方法 2:使用链表插入元素:删除元素:当数据经常从一个地方移动到另一个地方或从一个进程移动到另一个进程或被频繁访问时,它不能存储在永久性内存…...
通用方法——为什么重写equals还要重写hashcode
本文介绍java.lang.Object类中的两个方法:equals和hashCode。这两个方法大家应该都知道,但是这两个方法的作用是什么、为什么重写equals还要重写hashCode、它们之间有什么关系和约定等,今天就来带大家了解一下。 1、hashCode hashCode即散列…...
JavaSE学习进阶day2_01 包和权限修饰符
第一章 包 1.1 包 包在操作系统中其实就是一个文件夹。包是用来分门别类的管理技术,不同的技术类放在不同的包下,方便管理和维护。 在IDEA项目中,建包的操作如下: 这个咱们在基础班就谈到过。 包名的命名规范: 路径…...
Android性能调优 - 省电优化
省电:通过工具Battery Historian查看到:耗电大头: 屏幕、网络、cpuled/oled屏幕显示:降低亮度,开深色模式;锁屏间隔缩短到 ;亮屏需要一直持有唤醒锁,还有gps定位也需要用到唤醒锁;网络: 常用的网络优化措施…...
ElasticSearch - SpringBoot整合ES之全文搜索匹配查询 match
文章目录1. 数据准备2. match 匹配查询1. 全文检索2. 简化查询DSL语句3. match 匹配查询原理官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/index.html权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/…...
句子的改写和扩写
目录 1.句子改写 2.句子扩写 (不低于15个句子算是长句子,不能太多长句子) 1.句子改写 我绝不会嫁给你的。 如果你是世界上最后一个男人,我就去寺庙。 If you married me,I would jump into the well. 如果你嫁给我,我…...
LeRobot数据采集全流程解析:从环境配置到动作回放(SO-100实战)
LeRobot数据采集全流程实战:从环境搭建到动作复现的SO-100深度指南 当我们需要让机器人学会新技能时,数据采集是构建智能系统的第一步。LeRobot作为Hugging Face推出的机器人学习平台,通过标准化流程降低了开发门槛。本文将带你完整走通SO-10…...
2026届毕业生推荐的十大降重复率助手实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能技术于学术写作领域的运用愈发广泛,其助力论文撰写的本领已获实证&#…...
【游戏引擎之路】极速狂飙(一):5天打造跨平台Galgame播放器《Galplayer》——从脚本解析到电影式体验
1. 极速开发背后的技术选型 开发《Galplayer》最疯狂的地方在于,我只用了5天就完成了从零到可运行版本的开发。这听起来像天方夜谭,但合理的工具链选择让这一切成为可能。我选择了WPFPythonUnity这个"三件套"组合,每个工具都发挥了…...
网安实验干货每日分享(Weevely配置使用)
网安实验干货每日分享(Weevely配置使用)-1031 渗透测试环境搭建与工具使用-Weevely配置使用 实验目的 熟悉Webshell管理工具Weevely的配置使用。 实验环境 操作机:Kali2018-TS (1)操作系统:Kali Linu…...
微信聊天记录本地管理:WeChatMsg实现数据主权与记忆留存的完整方案
微信聊天记录本地管理:WeChatMsg实现数据主权与记忆留存的完整方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trend…...
3大突破!零基础用开源表盘工具创作专业级小米手表表盘
3大突破!零基础用开源表盘工具创作专业级小米手表表盘 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 如何突破官方表盘千篇一律的设计限制&#x…...
内网环境下基于Verdaccio搭建企业级npm私服及自动化依赖包管理实践
1. 为什么企业需要搭建npm私有仓库 最近几年在前端工程化领域,npm已经成为不可或缺的依赖管理工具。但对于企业级开发团队来说,直接使用公共npm仓库会遇到几个棘手问题: 第一是网络隔离问题。很多金融、政务类项目开发环境都是完全离线的内网…...
百度智能云千帆AppBuilder API调用全攻略:从密钥获取到实战代码示例
百度智能云千帆AppBuilder API深度集成指南:从密钥管理到高效调用实践 在人工智能应用开发领域,快速集成可靠的AI能力已成为开发者提升效率的关键。百度智能云千帆AppBuilder作为一站式AI原生应用开发平台,其API接口的灵活调用能力让开发者能…...
如何用CodeMaker将Java/Scala开发效率提升300%?5个核心技巧带你掌握智能代码生成
如何用CodeMaker将Java/Scala开发效率提升300%?5个核心技巧带你掌握智能代码生成 【免费下载链接】CodeMaker A idea-plugin for Java/Scala, support custom code template. 项目地址: https://gitcode.com/gh_mirrors/co/CodeMaker 作为Java/Scala开发者&a…...
YOLOv11模型转换避坑指南:如何正确修改pnnx.py适配不同输入尺寸
YOLOv11模型转换避坑指南:如何正确修改pnnx.py适配不同输入尺寸 在计算机视觉领域,YOLO系列模型因其高效的检测性能而广受欢迎。YOLOv11作为该系列的最新成员,在保持实时性的同时进一步提升了检测精度。然而,当我们需要将训练好的…...
