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

Python自动化操作Word文档详解

       在日常办公和数据处理中,我们经常需要处理Word文档。手动操作Word文档可能会非常繁琐和耗时,而使用Python可以实现自动化操作,提高工作效率。本文将详细介绍如何使用Python自动化操作Word文档,包括读取、写入、修改和格式化等操作。

一、安装所需的库

       要使用Python操作Word文档,我们需要安装一个名为python-docx的库。可以使用以下命令通过pip安装:

pip install python-docx

二、读取 Word 文档

1. 打开文档

       使用python-docx库中的Document类可以轻松打开一个Word文档。

示例:

from docx import Document

doc = Document('example.docx')

       在上面的代码中,我们将文档路径作为参数传递给Document类的构造函数,从而打开了一个名为example.docx的文档。

2. 读取文本内容

        一旦打开了文档,我们可以使用paragraphs属性来获取文档中的段落列表。每个段落都是一个Paragraph对象,我们可以使用text属性来获取段落的文本内容。

示例:

for paragraph in doc.paragraphs:

    print(paragraph.text)

       在上面的代码中,我们遍历文档中的每个段落,并打印出其文本内容。

3. 读取表格内容

如果文档中包含表格,我们可以使用tables属性来获取表格列表。每个表格都是一个Table对象,我们可以使用rows和columns属性来获取表格的行和列。

示例:

for table in doc.tables:

    for row in table.rows:

        for cell in row.cells:

            print(cell.text)

       在上面的代码中,我们遍历文档中的每个表格,并遍历每个表格的行和列,打印出每个单元格的文本内容。

三、写入 Word 文档

1. 创建新文档

       我们可以使用Document类的构造函数来创建一个新的空白文档。

示例:

from docx import Document

doc = Document()

在上面的代码中,我们创建了一个新的空白文档。

2. 添加段落

       我们可以使用add_paragraph方法来向文档中添加一个段落。

示例:

doc.add_paragraph('这是一个段落。')

在上面的代码中,我们向文档中添加了一个包含文本“这是一个段落。”的段落。

3. 添加表格

       我们可以使用add_table方法来向文档中添加一个表格。

示例:

table = doc.add_table(rows=3, cols=3)

for row in table.rows:

    for cell in row.cells:

        cell.text = '单元格内容'

在上面的代码中,我们向文档中添加了一个3行3列的表格,并为每个单元格设置了文本内容。

4. 保存文档

       我们可以使用save方法来保存文档。

示例:

doc.save('new_document.docx')

在上面的代码中,我们将文档保存为名为new_document.docx的文件。

四、修改 Word 文档

1. 修改段落内容

       我们可以使用paragraphs属性来获取文档中的段落列表,并使用text属性来修改段落的文本内容。

示例:

for paragraph in doc.paragraphs:

    if '要修改的内容' in paragraph.text:

        paragraph.text = paragraph.text.replace('要修改的内容', '修改后的内容')

在上面的代码中,我们遍历文档中的每个段落,如果段落中包含“要修改的内容”,则将其替换为“修改后的内容”。

2. 修改表格内容

       我们可以使用tables属性来获取文档中的表格列表,并使用rows和columns属性来修改表格的行和列。

示例:

for table in doc.tables:

    for row in table.rows:

        for cell in row.cells:

            if '要修改的内容' in cell.text:

                cell.text = cell.text.replace('要修改的内容', '修改后的内容')

在上面的代码中,我们遍历文档中的每个表格,并遍历每个表格的行和列,如果单元格中包含“要修改的内容”,则将其替换为“修改后的内容”。

五、格式化 Word 文档

1. 设置字体格式

       我们可以使用Run对象来设置段落中的字体格式。

示例:

from docx.shared import Pt

paragraph = doc.add_paragraph('这是一个段落。')

run = paragraph.runs[0]

run.font.name = '宋体'

run.font.size = Pt(12)

run.bold = True

run.italic = True

run.underline = True

在上面的代码中,我们向文档中添加了一个段落,并设置了段落中第一个Run对象的字体格式为宋体、字号为12磅、加粗、斜体和下划线。

2. 设置段落格式

       我们可以使用ParagraphFormat对象来设置段落的格式。

示例:

from docx.enum.text import WD_ALIGN_PARAGRAPH

paragraph = doc.add_paragraph('这是一个段落。')

paragraph_format = paragraph.paragraph_format

paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

paragraph_format.line_spacing = 1.5

在上面的代码中,我们向文档中添加了一个段落,并设置了段落的格式为居中对齐、行间距为1.5倍。

3. 设置页面格式

我们可以使用Section对象来设置页面的格式。

示例:

from docx.enum.section import WD_SECTION

section = doc.sections[0]

section.page_height = Pt(11692)

section.page_width = Pt(8268)

section.left_margin = Pt(720)

section.right_margin = Pt(720)

section.top_margin = Pt(720)

section.bottom_margin = Pt(720)

section.header_distance = Pt(360)

section.footer_distance = Pt(360)

在上面的代码中,我们设置了文档的页面格式为A4纸大小、页边距为720磅、页眉和页脚距离为360磅。

六、总结

        通过使用python-docx库,我们可以轻松地使用Python自动化操作Word文档。本文介绍了如何读取、写入、修改和格式化Word文档,希望对你有所帮助。在实际应用中,你可以根据自己的需求进一步扩展和定制这些功能,以提高工作效率。

 

 

相关文章:

Python自动化操作Word文档详解

在日常办公和数据处理中,我们经常需要处理Word文档。手动操作Word文档可能会非常繁琐和耗时,而使用Python可以实现自动化操作,提高工作效率。本文将详细介绍如何使用Python自动化操作Word文档,包括读取、写入、修改和格式化等操作…...

常用滤波算法(二)-中位值滤波法

文章目录 一、中位值滤波法简介二、C语言实现中位值滤波法三、程序说明信号初始化:滤波窗口大小:内存分配:中位值滤波函数:中位值计算函数:内存释放: 四、总结 中位值滤波法,作为一种非线性滤波…...

HCIP--以太网交换安全(总实验)

实验背景 假如你是公司的网络管理员,为了提高公司网络安全性,你决定在接入交换机部署一些安全技术:端口隔、端口安全、DHCP snooping、IPSG。 实验拓扑图 实验的要求: 1.在R1、R2连接在GE0/0/1和GE0/0/2接口下,均划…...

C语言 | Leetcode C语言题解之第519题随机翻转矩阵

题目: 题解: typedef struct {unsigned long long val;UT_hash_handle hh; } Hash;typedef struct {Hash *hash;int n_rows;int n_cols; } Solution, SL;Solution* solutionCreate(int n_rows, int n_cols) {SL *obj malloc(sizeof(SL));obj->hash …...

《机器人SLAM导航核心技术与实战》第1季:第10章_其他SLAM系统

视频讲解 【第1季】10.第10章_其他SLAM系统-视频讲解 【第1季】10.1.第10章_其他SLAM系统_RTABMAP算法-视频讲解 【第1季】10.2.第10章_其他SLAM系统_VINS算法-视频讲解 【第1季】10.3.第10章_其他SLAM系统_机器学习与SLAM-视频讲解 第1季:第10章_其他SLAM系统 …...

《双指针篇》---快乐数

题目传送门 1.创建一个bitsum函数用于得到这个数每位的平方和。 2.令快指针等于bitsum(n) 3.慢指针等于n。 逐步令 fast bitSum(bitSum(fast)); slow bitSum(slow); 若最后fast等于slow,则且等于1.则return true。 否则return false。 cla…...

U盘引导丢失问题的处理办法

项目背景:在使用自制的u盘系统的时候经常遇到引导丢失的问题,那么咱们怎么解决这个问题呢,首先第一步通过手动引导u盘 进入系统,同时再进行引导区的修复这样u盘系统就可以正常工作了。 1 进入grub 的提示符下面,首先…...

layui tree customSelet选中的内容重写,查找父级

layui tree customSelet选中的内容重写&#xff0c;查找父级 需要重新源码 // 递归查找函数 // tree 所有数据 &#xff0c;nodeId选中数据id值 function findParent(tree, nodeId, parent null) {for (let i 0; i < tree.length; i) {if (tree[i].id nodeId) {return …...

Maven 插件

Maven 插件 Maven 是一个强大的项目管理和构建自动化工具&#xff0c;广泛应用于 Java 项目中。它通过插件来实现各种功能&#xff0c;如编译、测试、打包、部署等。Maven 插件是 Maven 的核心组成部分&#xff0c;它们扩展了 Maven 的功能&#xff0c;使其能够执行各种任务。…...

MybatisPlus入门(七)MybatisPlus-DQL编程控制

一、查询投影 查询投影&#xff1a;查出来的东西有多少字段&#xff0c;设置查询出来的结果长什么样&#xff0c;查出的字段控制&#xff1b; 查询投影适用于lamda格式&#xff0c;使用select 查询 lqw.select(User::getId,User::getName,User::getAge); 代码示例&#xff1…...

K8S概念及其常见组件和整体架构

1.概念 什么是Kubernetes 官网&#xff1a;Kubernetes 文档 | Kubernetes K8S的本质是一组服务器集群&#xff0c;可以在对应服务器集群的每个节点上运行程序&#xff0c;来对节点中的容器进行管理 类似Master-Work方式&#xff0c;每个服务器上安装特定的K8S组件&#xff0c…...

LabVIEW继电器视觉检测系统

随着制造业的自动化与高精度要求不断提升&#xff0c;传统的人工检测方法逐渐难以满足高效和高精度的需求。特别是在航空航天、医疗设备等高端领域&#xff0c;密封继电器推动杆部件的质量直接影响到设备的性能与可靠性。LabVIEW自动化视觉检测系统&#xff0c;能对推动杆部件进…...

linux操作系统进程

linux操作系统是对下的软硬件进行管理&#xff0c;为了能够对上提供稳定&#xff0c;快速&#xff0c;安全的服务而诞生的软件。 广义上的操作系统是包含搭载在操作系统上的软件和函数库等文件的。 狭义上的操作系统就是操作系统内核&#xff0c;进行进程管理&#xff0c;文件…...

jeecgbootvue2菜单路由配置静态文件夹(public)下的html

需求:想要在菜单配置src/assets/iconfont/chart.html显示页面(目的是打包上线以后运维依然可以修改数据) 官网没有相关数据&#xff1a;菜单配置说明 JeecgBoot 开发文档 看云 问题现象: 我把文件放在src/assets/iconfont/chart.html然后在vue中作为 iframe 的 src 属性&am…...

PHP反序列化原生类字符串逃逸框架反序列化利用

PHP反序列化 概念 序列化的原因&#xff1a;为了解决开发中数据传输和数据解析的一个情况(类似于要发送一个椅子快递&#xff0c;不可能整个椅子打包发送&#xff0c;这是非常不方便的&#xff0c;所以就要对椅子进行序列化处理&#xff0c;让椅子分成很多部分在一起打包发送…...

6.1、属性动画

使用显式动画产生布局更新动画 1.旋转动画 只修改对应的属性 rotate({angle: this.angle}) 即可达到效果 动画效果 对应实现代码 @Entry @Component struct AnimationPage {@State angle:number = 0aboutToAppear() {...

v-model还可以作用于其他表单元素的使用

1、文本输入框 直接双向绑定输入的元素值 初始化默认值为空字符串 2、复选按钮 直接双向绑定输入的元素值 初始化默认值为flase&#xff0c;不选中 3、单选按钮&#xff0c; 1.使用name分组&#xff0c;产生互斥效果。 2.使用value存值&#xff0c; 3再用v-model双向绑定…...

最短路的求解

实验类型&#xff1a;◆验证性实验 ◇综合性实验 ◇设计性实验 实验目的&#xff1a;学会使用Matlab求解最短路。 实验内容&#xff1a;1.熟练运用Floyd算法&#xff1b;2. 熟练运用Dijkstra算法&#xff1b;3.利用Matlab编程实现最短路的计算。 例1&#xff1a;已知无向图…...

四:java 基础知识(4)-- 异常 字符串

目录 1. 异常处理 1.1 什么是异常 1.2 异常的类型 1.2.1 检查异常 1.2.2 运行时异常 1.3 异常的捕获与处理 1.3.1 try-catch 语句 1.3.2 finally 块 1.3.3 throw 和 throws 关键字 1.4 自定义异常 1.5 异常的最佳实践 2. 字符串 2.1 String 类的概述 2.2 字符串的…...

Uniapp 实现app自动检测更新/自动更新功能

实现步骤 配置 manifest.json 在 manifest.json 中设置应用的基本信息&#xff0c;包括 versionName 和 versionCode。 一般默认0.0.1&#xff0c;1. 服务器端接口开发 提供一个 API 接口&#xff0c;返回应用的最新版本信息&#xff0c;版本号、下载链接。客户端检测更新 使…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...