python操作.docx、.pptx文件

python操作.docx、.pptx文件

.docx文件和.pptx文件是Microsoft Office套件中两种常见的文件格式,分别对应Word文档和PowerPoint演示文稿。WPS Office完美支持Microsoft Office文件格式。

使用 Python 操作 .docx 和 .pptx 文件是一项非常实用的技能,尤其在自动化文档生成、报告生成和批量修改演示文稿时非常有用。

要在Python中打开和处理.docx和.pptx文件,你可以使用第三方库。

如何验证是否已安装python-docx库、python-pptx库?

可在 Python 交互式环境中验证,打开 Python 交互式环境(REPL,也称为Python的 shell),然后尝试导入这些库:

import docx

import pptx

如果没有出现错误消息,说明库已经成功安装。

python操作.docx文件

python-docx 是一个用于创建和更新 Microsoft Word (.docx) 文件的 Python 库。它允许你:

创建新的 Word 文档

读取和修改现有文档

添加段落、标题、表格、图片等

安装python-docx库,在cmd中输入如下命令:

pip install python-docx

如果电脑上安装了多个Python版本,你可以为特定版本的Python安装模块(库、包)。例如我的电脑中安装了多个Python版本,要在Python 3.12版本中安装,在cmd中输入如下命令:

py -3.12 -m pip install python-docx

可以使用国内的镜像网站加快安装速度,例如使用清华的镜像,可以在后面添加 -i https://pypi.tuna.tsinghua.edu.cn/simple,如:

py -3.12 -m pip install python-docx -i https://pypi.tuna.tsinghua.edu.cn/simple

【关于安装安装第三方库的更多情况,可参见:https://blog.csdn.net/cnds123/article/details/104393385 】

下面简单介绍python-docx库的基本操作

1)创建新文档

from docx import Document# 创建一个新的文档
doc = Document()# 添加标题
doc.add_heading('这是一个标题', level=1)# 添加段落
doc.add_paragraph('这是一个段落。')
doc.add_paragraph('这是另一个段落。')# 保存文档
doc.save('示例文档.docx')

 运行后在当前目录中可以找到“示例文档.docx”,打开它,内容参见下图:

特别提示, python-docx的路径处理说明:

指定完整路径可以确保文件被保存在你期望的位置。如果只使用文件名,文件将保存到当前工作目录(文件会保存在 Python 脚本所在目录)。

在 Windows 中,路径包含反斜杠 \,可能需要用双反斜杠 \\ 或前面加 r (原始字符串)来避免转义字符的问题。例如:doc.save(r'D:\path\document.docx')

如果指定路径下已存在同名文件,会直接覆盖现有文件,不会给出警告。例如: doc.save('示例文档.docx') 方法时,如果当前目录下已经存在名为 example.docx 的文件,它将被新文档覆盖,无任何提示。如果你想避免覆盖现有文件,可以在保存之前检查文件是否已经存在。以下是一种简单的实现方法:

import os
from docx import Documentdef save_doc_with_no_overwrite(doc, filename):if os.path.exists(filename):base, extension = os.path.splitext(filename)counter = 1new_filename = f"{base}_{counter}{extension}"while os.path.exists(new_filename):counter += 1new_filename = f"{base}_{counter}{extension}"filename = new_filenamedoc.save(filename)print(f"文件保存为: {filename}")# 创建一个新的 Word 文档
doc = Document()
doc.add_heading('文档标题', level=1)
doc.add_paragraph('这是一个段落。')
doc.add_paragraph('这是另一个段落。')# 尝试保存文档
save_doc_with_no_overwrite(doc, '示例文档.docx')

说明,其中os.path.exists(filename) 用于检查文件是否存在。

如果文件已存在,脚本会增加一个后缀数字 (例如 example_1.docx, example_2.docx),直到找到一个未被使用的文件名保存。

2)读取现有文档

from docx import Document# 打开现有文档
doc = Document('示例文档.docx')# 遍历段落
for para in doc.paragraphs:print(para.text)

如果你使用 python-docx 尝试打开一个不存在的文档,它将引发异常。因此,为了处理这种情况,你应该使用 try 和 except 块以避免程序崩溃,并能够妥善处理错误。

以下是一个示例,展示如何读取现有 .docx 文件,并处理文件不存在的情况:

import os
from docx import Documentdef read_doc(filename):#在尝试打开文件之前,可以使用 os.path 模块来验证文件是否存在。if os.path.exists(filename):try:doc = Document(filename)# 处理文档,读取文档内容显示for para in doc.paragraphs:print(para.text)except Exception as e:print(f"发生错误: {e}")else:print(f"错误: 文件 '{filename}' 不存在。")# 尝试读取文档
read_doc('示例文档.docx')

3)修改文档内容

from docx import Document# 打开文档
doc = Document('示例文档.docx')# 修改第一个段落
doc.paragraphs[1].text = '这是修改后的段落。'# 保存修改
doc.save('示例文档.docx')

说明,用doc.paragraphs[i].text= '修改后的内容'时,需要注意,在 python-docx 中,doc.paragraphs [i]是一个包含文档中所有段落的列表,包括标题、正文段落、空行、图片说明、表格标题(但不包括表格内容)、页眉和页脚(如果存在)。它们都被视为"段落"对象。索引 i 从 0 开始。所以 doc.paragraphs[0] 是文档中的第一个段落,doc.paragraphs[1] 是第二个,以此类推。为了更精确地修改文档中的特定部分(如标题或特定段落),需要了解如何区分不同类型的段落。可以通过打印段落的样式名称来确认实际使用的样式:

from docx import Document# 打开文档
doc = Document('示例文档.docx')# 打印(显示)段落的样式名称
for para in doc.paragraphs:print(para.style.name)

python操作.pptx文件

python-pptx 是一个用于创建和更新 Microsoft PowerPoint (.pptx) 文件的 Python 库。它允许你:

创建新的演示文稿

读取和修改现有演示文稿

添加幻灯片、文本框、图片、图表等

安装python-pptx库,在cmd中输入如下命令:

pip install python-pptx

如果电脑上安装了多个Python版本,你可以为特定版本的Python安装模块(库、包)。例如我的电脑中安装了多个Python版本,要在Python 3.12版本中安装,在cmd中输入如下命令:

py -3.12 -m pip install python-pptx

下面简单介绍python-pptx库基本操作

1)创建新演示文稿

from pptx import Presentation# 创建一个新的 PowerPoint 演示文稿
ppt = Presentation()# 添加第一张幻灯片
slide_layout = ppt.slide_layouts[0]  # 选择标题和内容的布局
slide = ppt.slides.add_slide(slide_layout)# 添加标题和内容
title = slide.shapes.title
content = slide.placeholders[1]title.text = "演示文稿标题"
content.text = "这是幻灯片的内容。"# 添加第二张幻灯片
slide = ppt.slides.add_slide(ppt.slide_layouts[1])  # 选择标题只的布局
title = slide.shapes.title
title.text = "第二张幻灯片"# 正确地引用第二张幻灯片的内容占位符
content = slide.placeholders[1]
content.text = "这第二张是幻灯片的内容。"# 保存演示文稿
ppt.save('PowerPoint演示文稿.pptx')

运行后在当前目录中可以找到“PowerPoint演示文稿.pptx”,打开它,内容参见下图:

顺便提示,python-pptx 的路径处理方式与 python-docx 非常相似,可参见前面有关部分。

2)读取现有演示文稿

from pptx import Presentation# 打开现有演示文稿
prs = Presentation('PowerPoint演示文稿.pptx')# 遍历幻灯片
for i, slide in enumerate(prs.slides):print(f"幻灯片 {i+1}:")for shape in slide.shapes:if hasattr(shape, "text"):print(shape.text)

python-docx 官方文档 https://python-docx.readthedocs.io/en/latest/

python-pptx 官方文档 https://python-pptx.readthedocs.io/en/latest/

附录、python操作.xlsx文件

要在 Python 中操作 .xlsx 文件,可以使用 openpyxl 、 pandas 等库。

使用Python的模块openpyxl操作EXCEL https://blog.csdn.net/cnds123/article/details/104280165

使用Python的pandas库操作Excel https://blog.csdn.net/cnds123/article/details/125457620

使用Python的库xlwings操作EXCEL https://blog.csdn.net/cnds123/article/details/114446622

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/442645.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch 备考 -- Snapshot Restore

一、题目 备份集群下的索引 task,存储快照名称为 snapshot_1 二、思考 这个涉及的是集群的备份,主要是通过创建快照,涉及到以下2步骤 Setp1:注册一个备份 snapshot repository Setp2:创建 snapshot 可以通过两种方…

目标检测 DN-DETR(2022)

文章目录 前言gt labels 和gt boxes加噪query的构造attention maskIS(InStability)指标 前言 gt labels 和gt boxes加噪 query的构造 attention mask IS(InStability)指标

工行企业网银U盾展期后有两个证书问题的解决方法

工行企业网银U盾证书快到期后,可以自助展期,流程可以根据企业网银提示页面操作。操作后,可能存在两个新旧两个证书并存的情况,致使网银转账等操作失败,如图: 其原因是新证书生成后,旧证书没有删…

TCP_SOCKET编程实现

文章目录 与UDP_SOCKET的区别第一代Tcp_ServerTcp_Client第二代Tcp_Server第三代Tcp_server多线程版本Tcp_Server线程池版的Tcp_Server使用inet_ntop来解决线程安全问题 业务逻辑编写总结补充说明&&业务代码完成ping的真实作用Translate编写Transform业务代码 整体总结…

胤娲科技:机械臂「叛逃」记——自由游走,再悄然合体

夜深人静,你正沉浸在梦乡的前奏,突然意识到房间的灯还亮着。此刻的你,是否幻想过有一只无形的手,轻盈地飘过,帮你熄灭那盏碍眼的灯? 又或者,你正窝在沙发上,享受电视剧的紧张刺激&am…

C语言 | Leetcode C语言题解之第466题统计重复个数

题目&#xff1a; 题解&#xff1a; #include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <string.h> #include <math.h> #include <limits.h>#define MMAX(a, b) ((a) > (b)? (a) : (b)) #define MMIN(a,…

打卡第六天 P10287 [GESP样题 七级] 最长不下降子序列

今天是我打卡第六天&#xff0c;做个普及/提高−题吧(#^.^#) 原题链接&#xff1a;[GESP样题 七级] 最长不下降子序列 - 洛谷 题目描述 输入格式 输出格式 输出一行一个整数表示答案。 输入输出样例 输入 #1 5 4 2 10 6 3 1 5 2 2 3 3 1 1 4 输出 #1 3 输入 #2 6 11 …

微服务——分布式事务

目录 分布式事务 1.1分布式事务的特性 1.2分布式事务应用背景 ​编辑 1.3.认识Seata 1.4部署TC服务 1.4.1.准备数据库表 1.4.2.准备配置文件 1.4.3.Docker部署 1.5.微服务集成Seata 1.5.1.引入依赖 1.5.2.改造配置 1.5.3.添加数据库表 ​编辑1.6.XA模式 1.6.1.两…

JavaScript函数基础(通俗易懂篇)

10.函数 10.1 函数的基础知识 为什么会有函数&#xff1f; 在写代码的时候&#xff0c;有一些常用的代码需要书写很多次&#xff0c;如果直接复制粘贴的话&#xff0c;会造成大量的代码冗余&#xff1b; 函数可以封装一段重复的javascript代码&#xff0c;它只需要声明一次&a…

精品WordPress主题/响应式个人博客主题Kratos

Kratos 是一款专注于用户阅读体验的响应式 WordPress 主题&#xff0c;整体布局简洁大方&#xff0c;针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净&#xff0c;简单且响应迅速的博客主题&#xff0c;Vtrois创建和维护&#xff0c; 主…

LeetCode 刷题基础 -- 模板原型Ⅰ

模板原型 - 基础篇 学习网站一、进制转换二、二分查找① 查找指定元素② 查找第一个大于等于 x 值的序列下标③ 查找第一个大于 x 值的序列下标④ 单峰序列 三、双指针① 两数之和② 序列合并③ 集合求交④ 集合求并 四、其他高效技巧与算法① 区间和② 01 对③ 左小数 五、数学…

BLE MESH学习1-基于沁恒CH582学习

BLE MESH学习1-基于沁恒CH582学习 一、BLE mesh说明 mesh组网可以实现相比点对点模式更远的距离、更灵活的网络形式、更可靠的连接和更多的设备加入。BLE mesh在IoT中的传感器和控制具有重要意义。我的目的也是IoT领域&#xff0c;实现自己的传感器读取、开关控制等类似米家智…

知识改变命运 数据结构【java对象的比较】

0&#xff1a;前言 在基本数据类型中&#xff0c;我们可以直接使用号比较是否相等&#xff0c;还记的学堆哪里时候&#xff0c;插入一个数据&#xff0c;就会与其他数据进行比较&#xff0c;当时我们传入的是Integer类型&#xff0c;在Integer类里面已经实现了compare。 如果…

西门子S7-1200博途软件项目的下载

S7-1200的CPU本体上集成了PROFINET通信口&#xff0c;通过这个通信口可以实现CPU与编程设备的通信。 此外&#xff0c;S7-1200 可以通过连接CM1243-5扩展模块&#xff0c;然后电脑通过PC ADAPTER USB A2电缆、或者电脑上的CP卡&#xff08;例如CP5612&#xff09;通过PROFIBUS…

手写mybatis之SQL执行器的定义和实现

前言 所有系统的设计和实现&#xff0c;核心都在于如何解耦&#xff0c;如果解耦不清晰最后直接导致的就是再继续迭代功能时&#xff0c;会让整个系统的实现越来越臃肿&#xff0c;稳定性越来越差。而关于解耦的实践在各类框架的源码中都有非常不错的设计实现&#xff0c;所以阅…

陪伴系统,会成为女性向游戏的下一个争夺点吗?

乙游提供给女性玩家的只有恋爱感吗&#xff1f; 一般来说&#xff0c;对于乙女游戏的概括常常以为玩家提供“恋爱陪伴感”为主&#xff0c;恋爱很好理解&#xff0c;通过与多位男主角的剧情互动来模拟在真实恋爱中的情感交互&#xff0c;当下乙游都将重点放在了营造恋爱感上。…

55页可编辑PPT | 制造企业数字化转型顶层规划案例

基于集团的战略和运营特点&#xff0c;数字化转型应如何考虑&#xff1f; 在集团的战略和运营特点基础上进行数字化转型&#xff0c;需要实现业务多元化&#xff0c;整合资源和流程&#xff0c;推动国际化拓展&#xff0c;实施差异化战略&#xff0c;并通过数据驱动决策&#…

Vue工程化结构环境安装及搭建教程 : 之nvm

vue需要的环境&#xff1a; node.js : Node.js和Vue.js通常会一起使用。Node.js作为后端服务器&#xff0c;处理服务器端的逻辑和数据访问&#xff0c;而Vue.js则负责前端用户界面的构建和交互。通过Ajax通信&#xff0c;Vue.js应用程序向Node.js服务器发送请求&#xff0c;并…

【Ubuntu】git

文章目录 1.配置SSH key2. 基础知识操作命令1分支branch 如果对git命令使用不熟悉&#xff0c;推荐一个非常棒的git在线练习工具 Learn Git Branching。 https://m.runoob.com/git/git-basic-operations.html 1.配置SSH key ssh-keygen -t rsa -C "YOUR EMAIL"完成…

PDF无法导出中文

font/SIMSUN.TTC with Identity-H is not recognized. 查看BaseFont源码发现".ttc," 改为"SIMSUN.TTC,a"提示数字转换异常 改为"SIMSUN.TTC,11"提示数字索引必须介于0和1之间 改为0或1结果正常 BaseFont baseFont BaseFont.createFont("/U…