python操作.docx、.pptx文件

news2024/12/26 9:29:52

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 Document

def save_doc_with_no_overwrite(doc, filename):
    if os.path.exists(filename):
        base, extension = os.path.splitext(filename)
        counter = 1
        new_filename = f"{base}_{counter}{extension}"
        while os.path.exists(new_filename):
            counter += 1
            new_filename = f"{base}_{counter}{extension}"
        filename = new_filename
        
    doc.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 Document

def 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.coloradmin.cn/o/2197797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BlabkForestLabs 又放大招:“蓝莓”模型其实是 Flux1.1?!

神秘的 AI 生成模型 BlabkForestLabs 又放大招了?就在 AI 绘画圈还在训练 Flux.1 练的不亦乐乎的时候,黑森林工作室又推出了一个新的模型—— Flux1.1 !这次升级后的 Flux1.1 性能直接完爆前版的 Flux.1 ,再次将 AI 绘画的上限拉高…

如何给ppt增加新的一页?这2个ppt使用技巧值得推荐!

在当今讲究视觉表现力的时代,PPT已经成为职场中不可或缺的工具。无论是汇报工作、演示方案还是传递想法,一份精美的PPT都能让你的演讲(演示)更加出色。 然而,制作PPT并非易事,尤其是对于新手来说&#xff…

STM32-HAL库 驱动DS18B20温度传感器 -- 2024.10.8

目录 一、教程简介 二、驱动理论讲解 三、CubeMX生成底层代码 四、Keil5编写代码 五、实验结果 一、教程简介 本教程面向初学者,只介绍DS18B20的常用功能,但也能满足大部分的运用需求。跟着本教程操作,可在10分钟内解决DS18b20通信难题。…

windows认证

本地环境用户信息存储在%systemroot%/system32/SAM 域环境用户信息存储在ntds.dit 本地认证 windows系统下哈希结构:username:RID:LM-HASH:NT-HASH LM哈希 算法: 转大写,转二进制,补0补足14字节 二分获得两段字串&#xff…

算法:238.除自身以外数组的乘积

题目 链接:leetcode链接 思路分析(前缀和) 这道题非常类似 724. 寻找数组的中心下标 在前一篇博客讲解了该题目 传送门:算法:724.寻找数组的中心下标 这道题目的区别在于,这道题是预处理前缀积和后缀积 另外&#x…

了解网页 blob 链接

blob 链接 自从 HTML5 提供了 video 标签,在网页中播放视频变得非常简单,只要在代码中插入一个 video 标签,再将 video 标签的 src 属性设置为视频的链接就可以了。由于 src 指向的是视频文件真实的地址,所以当我们通过浏览器的调…

如何绘制短剧产业链图谱?短剧产业前景如何?

绘制短剧产业链图谱是一个涉及多个环节的复杂过程。我们首先需要确定产业链的主要环节,包括内容创作、制作、发行、宣传和观众。每个环节都由不同的参与者组成,如编剧、导演、演员、制作公司、版权销售商、在线平台、电视台、广告公司和消费者等&#xf…

《CTF 特训营》:网络安全竞赛的进阶指南

在网络安全领域日益受到重视的今天,CTF(Capture The Flag)竞赛作为一种检验和提升网络安全技能的方式,受到了越来越多爱好者的关注。而《CTF 特训营》这本书,无疑是一本帮助读者深入了解 CTF 竞赛的优秀读物。 一、书籍…

Linux shell编程学习笔记86:sensors命令——硬件体温计

0 引言 同事们使用的Windows系统电脑,经常莫名其妙地装上了鲁大师,鲁大师的一项功能是显示系统cpu等硬件的温度。 在Linux系统中,sensors命令可以提供类似的功能。 1 sensors命令 的安装和配置 1.1 sensors命令 的安装 要使用sensors命…

INS淡绿色风格人像街拍Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色介绍 INS 淡绿色风格人像街拍通过 Lightroom 调色可以营造出清新、自然、时尚的视觉效果。这种风格以淡绿色为主色调,给人一种宁静、舒适的感觉。 预设信息 调色风格:INS风格预设适合类型:人像,街拍,自拍&#…

动态规划算法题目练习——62.不同路径

1.题目解析 题目来源:62.不同路径——力扣 测试用例 2.算法原理 1.状态表示 这时由于避免越界初始化所以将左上角置为虚拟位置,创建一个二维dp表用来存储到当前为止的所有路径 2.状态转移方程 以dp[i,j]为例,起点到该位置的路径是起点到其上…

信息安全工程师(40)防火墙技术应用

一、防火墙的基本概念 防火墙是一种网络安全设备,用于监控和控制网络流量,以保护网络免受未经授权的访问和攻击。它可以是装配多张网卡的通用计算机,也可能是通用的物理设备。防火墙通过在网络之间设置访问控制策略,对进出的通信流…

JAVA开源项目 新生报到网站 计算机毕业设计

本文项目编号 T 002 ,文末自助获取源码 \color{red}{T002,文末自助获取源码} T002,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 提…

【C语言】指针练习题

一、指针指向问题 int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } 结果为:2,5。&a是整个数组(&a 1)被强转为(int*&am…

mujoco版本问题以及ERROR: Failed building wheel for mujoco-py

问题: ERROR: Failed building wheel for mujoco-py Failed to build mujoco-py ERROR: Could not build wheels for mujoco-py, which is required to install pyproject.toml-based projects 起因: 一开始我使用这个命令安装pip install mujoco_py&…

跨境卖家品牌出海要注意哪些方面

随着目前互联网的发展,市场由线下扩张到全国,再扩张到了全球,但是海外市场和国内并不相同跨境卖家品牌想要出海,需要注意多个方面,以确保能够在国际市场上成功立足并发展。以下是一些关键点: 首先想得拥有…

2-116 基于matlab的主成分分析(PCA)及累积总和(CUSUM)算法故障监测

基于matlab的主成分分析(PCA)及累积总和(CUSUM)算法故障监测,针对传统的多元统计分析方法对生产过程中微小故障检测不灵敏的问题,使用基于主元分析的累积和的微小故障检测方法进行故障监测,通过…

微信卸载后聊天记录全部消失,重新安装后有方法恢复吗?

微信作为我们日常沟通的重要工具,其聊天记录往往承载着许多珍贵的回忆和重要的信息。然而,在日常使用手机的过程中,我们时常会出于清理内存、解决软件故障或尝试新版本等原因,选择卸载并重新安装微信app。然而,这一简单…

国家公务员考试倒计时页面介绍

代码复刻 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>国家公务员考试倒计时</title><…

malloc(0)

malloc(0) 在操作系统底层的实现涉及内存分配管理的多个方面。下面是对 malloc(0) 的实现原理的详细解释&#xff1a; 1. 内存分配管理 操作系统通过内存管理子系统来处理内存分配请求&#xff0c;包括 malloc 函数。内存分配通常使用以下几种策略&#xff1a; 堆管理&#…