当前位置: 首页 > news >正文

python 操作word库docx 增强接口

前言

用python 的docx 库操作word完成一些自动化的文档生成工作,但有时候会遇到docx库提供的操作无法直接满足业务上的需求,需要对其进行一些扩展。

接口完善实现

  1. 在指定的文字后面插入指定的文字

任务:以下示例需要在文档中的所有 "人生苦短" 后面插入文字 ",我用python!",并且希望插入后的文字与插入点前面的样式保持一致。

分析:通过在段落中用paragraph.text去搜索目标字符串 "人生苦短",然后再指定位置新增加一个run,并且在该run中写入 ",我用python!"。但是需要给新增加的run赋予它前面一个run的样式。由于目标字符串 "人生苦短"的格式在段落中可能并不一致,所以还需要定位到 "人生苦短"四个字符最后一个所在的run。

实现:见demo1

下图是原始的文档样式:

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

  1. 复制带样式的段落

任务:以下示例需要对文档中的一个段落进行复制,然后插入到其他指定的位置。被复制的段落里面的文字具有某些样式,希望复制之后这些样式得以保存。

分析:由于需要保持样式,显然不能直接获取到原段落的text然后重新创建一个paragraph到指定的位置。

实现:见demo2

这是复制之前的文档:

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

3.删除段落

#从文档中删除段落paragraph
def delete_paragraph(paragraph):p = paragraph._elementp.getparent().remove(p)paragraph._p = paragraph._element = None

4.插入段落

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 para

5.插入题注与交叉引用题注

见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();//日志的级别&#xff1b;//由低到高 trace<debug<info<warn<error//可以调整输出的日志级…...

关于slice扩容性能损耗的探究

背景 ​ 如果让我评选最伟大的数据结构&#xff0c;在我心中答案只有两个&#xff0c;数组和哈希表&#xff0c;这两个是我的程序的重要组成部分&#xff0c;同时也是我饭碗的重要组成部分。slice和map简洁明了的API很容易让我们有一种他们提供了无限大的空间&#xff0c;可以…...

Java实现单向链表

✅作者简介&#xff1a;热爱Java后端开发的一名学习者&#xff0c;大家可以跟我一起讨论各种问题喔。 &#x1f34e;个人主页&#xff1a;Hhzzy99 &#x1f34a;个人信条&#xff1a;坚持就是胜利&#xff01; &#x1f49e;当前专栏&#xff1a;Java数据结构与算法 &#x1f9…...

3月4日,30秒知全网,精选7个热点

///印度最大供电商罕见于现货市场购煤&#xff0c;能源供应短缺成忧 据知情人士透露&#xff0c;这家印度国有发电公司计划在下周左右发布300万吨的招标 ///QQ音乐推出AIGC黑胶播放器 这是国内音乐行业首个运用AI技术&#xff0c;通过文字、图片指令快速生成不同风格的播放器…...

EXCEL-职业版本(2)

Excel-职业版本&#xff08;2&#xff09; 定位 1.如何快速定位到不连续的空值&#xff0c;填充为0 1.在任意空单元格里复制0 2.选中数据区域CtrlA 3.CtrlG 4.选择【定位条件】 5.选择【空值】 6.ctrlV 粘贴 即可 2.怎么一次性计算每个小组的数量 单价和金额的和? 1.选中…...

java中延时队列的实现

大家好&#xff0c;我是一名CRUD工程师&#xff0c;最近我朋友突然来问我如何实现延时队列&#xff0c;我脱口而出就是MQ。不过突然想到公司的项目好像用的是java的一个原生类。于是我就想着趁周末的时间好好的去探究一下各方法实现延时队列的优缺点。 延迟消息 延迟消息就是字…...

基于java的circle buffer的实现

总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 缓冲区示例什么是循环缓冲区?方法 1:使用数组插入元素删除元素方法 2:使用链表插入元素:删除元素:当数据经常从一个地方移动到另一个地方或从一个进程移动到另一个进程或被频繁访问时,它不能存储在永久性内存…...

通用方法——为什么重写equals还要重写hashcode

本文介绍java.lang.Object类中的两个方法&#xff1a;equals和hashCode。这两个方法大家应该都知道&#xff0c;但是这两个方法的作用是什么、为什么重写equals还要重写hashCode、它们之间有什么关系和约定等&#xff0c;今天就来带大家了解一下。 1、hashCode hashCode即散列…...

JavaSE学习进阶day2_01 包和权限修饰符

第一章 包 1.1 包 包在操作系统中其实就是一个文件夹。包是用来分门别类的管理技术&#xff0c;不同的技术类放在不同的包下&#xff0c;方便管理和维护。 在IDEA项目中&#xff0c;建包的操作如下&#xff1a; 这个咱们在基础班就谈到过。 包名的命名规范&#xff1a; 路径…...

Android性能调优 - 省电优化

省电&#xff1a;通过工具Battery Historian查看到:耗电大头: 屏幕、网络、cpuled/oled屏幕显示:降低亮度&#xff0c;开深色模式&#xff1b;锁屏间隔缩短到 &#xff1b;亮屏需要一直持有唤醒锁&#xff0c;还有gps定位也需要用到唤醒锁;网络&#xff1a; 常用的网络优化措施…...

ElasticSearch - SpringBoot整合ES之全文搜索匹配查询 match

文章目录1. 数据准备2. match 匹配查询1. 全文检索2. 简化查询DSL语句3. match 匹配查询原理官方文档地址&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/index.html权威指南&#xff1a;https://www.elastic.co/guide/cn/elasticsearch/guide/current/…...

句子的改写和扩写

目录 1.句子改写 2.句子扩写 &#xff08;不低于15个句子算是长句子&#xff0c;不能太多长句子&#xff09; 1.句子改写 我绝不会嫁给你的。 如果你是世界上最后一个男人&#xff0c;我就去寺庙。 If you married me,I would jump into the well. 如果你嫁给我&#xff0c;我…...

避坑指南:WFDB读取ECG数据时,.hea文件真的‘几乎没用’吗?

避坑指南&#xff1a;WFDB读取ECG数据时&#xff0c;.hea文件真的‘几乎没用’吗&#xff1f; 在生物信号处理领域&#xff0c;WFDB&#xff08;Waveform Database&#xff09;格式是存储心电图&#xff08;ECG&#xff09;数据的黄金标准。许多开发者习惯性地认为.hea头文件只…...

微型LoRa数传电台:5KM无线通讯,空旷实测无压力

微型LoRa数传电台的通讯距离没有固定数值&#xff0c;从几十米到十几公里都有可能。它强烈依赖于具体的工作环境、设备配置以及天线状况。 一、不同环境下通讯距离&#xff1a; 理想环境 (郊区、农田、沙漠、海上)下3 - 10 公里&#xff0c;收发天线间无任何遮挡&#xff0c;是…...

Local Moondream2一键部署方案:省去依赖冲突的烦恼快速运行

Local Moondream2一键部署方案&#xff1a;省去依赖冲突的烦恼快速运行 1. 项目介绍 Local Moondream2 是一个基于 Moondream2 模型构建的超轻量级视觉对话 Web 界面。它能让你的电脑真正拥有"眼睛"&#xff0c;可以对上传的图片进行智能分析。 这个工具的核心功能…...

yz-bijini-cosplay效果惊艳展示:高精度布料褶皱、金属反光、发丝细节呈现

yz-bijini-cosplay效果惊艳展示&#xff1a;高精度布料褶皱、金属反光、发丝细节呈现 基于通义千问Z-Image底座与yz-bijini-cosplay专属LoRA的RTX 4090专属Cosplay风格文生图系统&#xff0c;为Cosplay创作带来了革命性的突破。这个系统不仅支持LoRA动态无感切换和多训练步数版…...

容器环境下各种兼容模式+多实例

注意&#xff1a; #多实例端口不同数据目录不同容器名不同 1. -p 主机端口:容器端口 容器端口永远是 54321&#xff08;不用改&#xff09; 主机端口必须不一样&#xff1a;4321、4322、4323... 一个端口只能给一个数据库用&#xff0c;就像一个门不能同时进两个人。2. -v 主机…...

KMS_VL_ALL_AIO:Windows和Office智能激活的革命性解决方案

KMS_VL_ALL_AIO&#xff1a;Windows和Office智能激活的革命性解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows和Office激活问题烦恼吗&#xff1f;KMS_VL_ALL_AIO是一款创…...

别再只盯着Protobuf了!从DDS到Thrift,聊聊不同IDL在自动驾驶和机器人项目里的真实选型

自动驾驶与机器人系统中的IDL选型实战&#xff1a;从DDS到Thrift的深度解析 在自动驾驶和机器人系统的开发中&#xff0c;接口定义语言(IDL)的选择往往决定了整个通信架构的成败。当激光雷达每秒产生数十万点云数据&#xff0c;当多个传感器需要在毫秒级完成数据融合&#xff…...

如何用kepano-obsidian构建你的终极知识管理系统:从零到精通的完整指南

如何用kepano-obsidian构建你的终极知识管理系统&#xff1a;从零到精通的完整指南 【免费下载链接】kepano-obsidian My personal Obsidian vault template. A bottom-up approach to note-taking and organizing things I am interested in. 项目地址: https://gitcode.com…...

告别锁相误差!基于DSOGI的正负序分离在Simulink中的建模与仿真全攻略

告别锁相误差&#xff01;基于DSOGI的正负序分离在Simulink中的建模与仿真全攻略 电力电子系统的核心挑战之一&#xff0c;是如何在电网电压不平衡条件下实现精确的相位同步。去年参与某微电网项目时&#xff0c;我们团队曾因传统锁相环在电压跌落时产生的相位抖动损失了关键数…...

PyTorch 2.8镜像功能体验:支持多卡计算,大幅缩短模型训练时间

PyTorch 2.8镜像功能体验&#xff1a;支持多卡计算&#xff0c;大幅缩短模型训练时间 1. PyTorch 2.8镜像概述 PyTorch 2.8镜像是一个开箱即用的深度学习环境&#xff0c;预装了PyTorch 2.8和CUDA工具包。这个镜像最大的亮点是支持多GPU并行计算&#xff0c;能够显著加速模型…...