《Python趣味工具》——ppt的操作(2)

news2024/11/25 17:22:50

在上次,我们对PPT进行了简单的处理;本次,我们要将PPT中的文本内容写入到 Word 文档中并添加标题,让 Word 文档看上去结构清晰,方便使用。


在这里插入图片描述


文章目录

  • 一、安装docx模块:
  • 二、从PPT中转移文字:
    • 1. 创建空白文档:
    • 2. 将文本内容全部添加进 Word 文档中:
    • 3. 批量写入:
    • 4. 继续润色:
  • 三、完整源码:

一、安装docx模块:

要使用 Python 对 Word 文档进行操作,我们需要安装一个用于数据写入的工具 python-docx

需要注意的是,python-docx 模块只可读取、写入 .docx 文件,不支持 .doc 文件。

.docx .doc 都是 Word 的文件后缀名,其中:

  • .docx 是 Microsoft Office2007 之后的版本;
  • .doc 是 Microsoft Office2003 以前的版本。

安装python-docx非常简单,在终端中输入代码:
pip install python-docx

如果电脑中同时存在Python 2 和 3,可能需要将pip改成pip3。
pip3 install python-docx

如果在自己电脑上安装不上或安装缓慢,可在命令后添加如下配置进行加速:
pip install python-docx -i https://pypi.tuna.tsinghua.edu.cn/simple/


二、从PPT中转移文字:

安装完 python-docx 模块后,下一步就是导入这个模块。

需要注意的是,导入python-docx模块需要使用 import docx,而不是import python-docx。
我们想要把 .pptx 文件中的文本内容全部写入 Word 文档中:

1️⃣首先,就需要新建一个空白 Word 文档;
2️⃣其次,将文本内容全部添加进 Word 文档中;
3️⃣最后,保存这个文档。


1. 创建空白文档:

使用这段代码就可以在指定路径下新建一个空白 Word 文档。

import docx
docxFile = docx.Document()
docxFile.save("/Users/ziliao.docx")

docx.Document() 函数可以新建一个 Word 文档,返回一个空白的 Word 文档对象。

docx 模块中的 Document 类,若指定路径则是打开文档;若没有指定路径则是新建文档。

将返回的 Word 文档对象赋值给一个变量。

新建的 Word 文档需要使用 save() 函数,将文件路径作为参数传入,即可保存文件。


2. 将文本内容全部添加进 Word 文档中:

add_paragraph() 函数可以将一段文本添加到 Word 文档中。

将要写入的文本以字符串形式传入 add_paragraph() 函数中,就可以在 Word 文档中添加一个段落。

import docx

docxFile = docx.Document()

docxFile.add_paragraph("你好,我是ziliao")

docxFile.save("/Users/ziliao/趣味工具.docx")

3. 批量写入:

之前,我们已经将 PPT 中的文本内容以样式块为单元读取了出来。现在要将这些文本内容批量写入 Word 文档中,只需要在读取文本代码的后面,调用 add_paragraph() 函数,传入样式块的文本内容。

texts = run.text
# TODO 向docxFile中添加段落texts的文本内容
docxFile.add_paragraph(texts)

代码运行成功后,打开“资料.docx”这个文档,就可以看到写入的文本内容,真不错~

但是,文本内容全部排列在一起,中间没有换行,也没有提示哪些段落是哪一页的内容,查找起来很不方便,这该怎么办呢?🤔


4. 继续润色:

在这里,我们可以添加标题,让内容有层级,方便查看。

使用 add_heading() 函数,添加相关参数,就可以在文档中添加标题。

import docx

docxFile = docx.Document()

docxFile.add_heading("我是标题",level=1)

docxFile.save("/Users/Python.docx")

将字符串传入 add_heading() 函数中,设置标题的内容。
参数 level 是标题样式,设置为 1 表示一级标题,2表示二级标题,以此类推。

我们可以将 PPT 的页码,作为标题添加到 Word 文档中。

  • 首先,把变量 n 设置为 1;
  • 接着,程序在读取幻灯片页时,将本页的页码以二级标题的样式添加到 Word 文档中;
  • 然后,在本页内容写入完后,将变量 n 进行累加。
n=1
# for循环遍历pptxFile中的.slides属性,赋值给slide
for slide in pptxFile.slides:
    
    # TODO 向文档中添加标题",为二级标题
    docxFile.add_heading(f"第{n}页")

    # for循环遍历slide中.shapes属性,赋值给变量shape
    for shape in slide.shapes:
        # 判断形状中是否有文本框
        if shape.has_text_frame == True:
            # 读取形状中的文本框,并赋值给变量textFrame
            textFrame = shape.text_frame
        
            # for循环遍历文本框内的所有段落
            # 赋值给变量paragraph
            for paragraph in textFrame.paragraphs:
                # for循环遍历段落中的所有样式块
                # 赋值给变量run
                for run in paragraph.runs:
                    # 读取样式块中的文本内容
                    texts = run.text
                    # 向Word文档中添加段落texts的文本内容
                    docxFile.add_paragraph(texts)

    # TODO 将变量n进行累加
    n+=1

代码运行成功后,打开“资料.docx”,在文档中生成了页码为内容的标题;在每个标题下,有该页对应的文本内容。


三、完整源码:

我们成功将 .pptx 文件中的文本内容写入到 Word 文档中,真棒呀👍👍👍

# 使用from...import从pptx模块中导入Presentation
from pptx import Presentation
# 使用import导入docx
import docx

# 新建一个空白Word文档,赋值给变量docxFile
docxFile = docx.Document()

# 将.pptx文件路径赋值给变量path
path = "/Users/xiaohe/statistics.pptx"
# 读取path并赋值给变量pptxFile
pptxFile = Presentation(path)

# 将变量n设置为1
n = 1

# for循环遍历pptxFile中的.slides属性,赋值给slide
for slide in pptxFile.slides:
    
    # 向文档中添加标题f"第{n}页",为二级标题
    docxFile.add_heading(f"第{n}页",level=2)

    # for循环遍历slide中.shapes属性,赋值给变量shape
    for shape in slide.shapes:
        # 判断形状中是否有文本框
        if shape.has_text_frame == True:
            # 读取形状中的文本框,并赋值给变量textFrame
            textFrame = shape.text_frame
        
            # for循环遍历文本框内的所有段落
            # 赋值给变量paragraph
            for paragraph in textFrame.paragraphs:
                # for循环遍历段落中的所有样式块
                # 赋值给变量run
                for run in paragraph.runs:
                    # 读取样式块中的文本内容
                    texts = run.text
                    # 向Word文档中添加段落texts的文本内容
                    docxFile.add_paragraph(texts)

    # 将变量n进行累加
    n = n + 1

# 保存文档到指定路径,并命名为"资料.docx"
docxFile.save("/Users/xiaohe/资料.docx")

你在本地练习读取自己的 PPT 写入 Word 文档时,可以先整理 PPT 中段落里样式块,尽量让一个段落的样式统一。

如果段落中的样式块过多,就会以一个样式块为一个段落写入 Word 文档中,再去调整文本格式就会很麻烦咯╮( ̄▽ ̄)╭


好了,今天的讲解就到这里,祝各位朋友们中秋节快乐!!!
在这里插入图片描述

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

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

相关文章

Elasticsearch基础篇(二):Elasticsearch在windows和liunx上的安装部署

Elasticsearch简介 前言1. Windows环境部署Elasticsearch1.1 下载并解压Elasticsearch压缩包1.2 命令行启动elasticsearch1.3 验证是否成功启动elasticsearch1.4 关闭Elasticsearch1.5 在Windows上安装Elasticsearch作为服务 2. Liunx环境部署Elasticsearch安装 Elasticsearch …

Python 爬虫 / web 面试常见问题

嗨喽,大家好呀~这里是爱看美女的茜茜呐 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可 爬虫面试常见…

Excel技巧之【锁定工作簿】

Excel工作簿是Excel工作区中一个或多个工作表的集合,我们知道Excel可以设置锁定工作表,防止意外或被他人修改,但可能有小伙伴不知道,Excel工作簿也同样可以设置锁定,防止更改。 那工作簿锁定后会怎么样呢?…

Mysql——三、SQL语句(上篇)

Mysql 一、SQL语句基础1、SQL简介2、SQL语句分类3、SQL语句的书写规范 二、数据库操作三、MySQL 字符集1、变量2、utf8和utf8mb4的区别 四、数据库对象五、SELECT语句1、简单的SELECT语句2、SQL函数2.1 聚合函数2.2 数值型函数2.3 字符串函数2.4 日期和时间函数2.5 流程控制函数…

Spring结合自定义注解实现 AOP 切面功能

Spring结合自定义注解实现 AOP 切面功能 Spring AOP 注解概述Aspect 快速入门execution 切点表达式 拦截指定类的方法Pointcut("annotation(xx)") 拦截拥有指定注解的方法环绕通知 实现开关目标方法案例1:自定义注解切面实现统一日志处理1.自定义日志注解…

Python3中类的高级语法及实战

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 一: 类定义语法 通过下面的实例,你将会了解到如下的内容体系: (1)类静态属性 (2)类动态属性 (3)类初始化过程: __init__(self)被执行&am…

java对象半初始化问题是怎么回事

文章目录 一、前言1. 什么是Java对象半初始化2. 对象半初始化问题引发的影响 二、对象半初始化问题详解1. Java对象创建过程 2. 对象半初始化问题产生的原因三、实例分析:对象半初始化问题的表现1. 单线程环境下的半初始化2. 多线程环境下的半初始化 四、解决方案及…

Java 基于 SpringBoot 的校园疫情防控系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2.主要技术3 需求分析4系统设计4.1功能结构4.2 数据库设计4.2.1 数据库E/R图4.2.2 数据库表…

预编译(1)

目录 预定义符号: 使用: 结果: 预编译前后对比: #define定义常量: 基本语法: 举例1: 结果: 预编译前后对比: 举例2: 预编译前后对比: 注…

嵌入式软硬件

在这里插入图片描述

APP渗透测试

APP反抓包突破 抓包失败分析 工具证书未配置 app不使用HTTP/S协议 反模拟器 1.使用真机进行抓包 2.用模拟器模拟真机 3.逆向删除反模拟器代码打包重新测试 反证书 SSL证书绑定分为单向校验和双向校验,单向校验就是客户端校验服务端的证书,双向…

回调函数的用途

一、函数指针 在讲回调函数之前,我们需要了解函数指针。 我们都知道,C语言的灵魂是指针,我们经常使用整型指针,字符串指针,结构体指针等 int *p1; char *p2; STRUCT *p3; //STRUCT为我们定义的结构体但是好像我们一…

【CTFHUB】SSRF绕过方法之靶场实践(二)

SSRF POST请求 提示信息: 这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.加油吧骚年 首先测试了http的服务请求,出现对话框 输入数值后提示:只能接受来自127.0.0.1的请求 右键查看源码发现key值 通过file协…

k8s+kubeedge+sedna安装的全套流程

一,环境准备 把两台虚拟机的ip地址设置成静态的IP地址,否则ip地址会变 虚拟机配置静态IP(NAT模式)_nat子网的准入_阿祖,收手吧的博客-CSDN博客​​​​​​ 节点IP软件 云节点192.168.133.139kubernetescloudcore边…

与初至波相关的常见误解

摘要: 初至波是指检波器首次接收到的波. 对它的误解会使我们失去重要的信息. 1. 波从震源到检波器的传导过程 从震源产生波以后, 有些波通过地面直接传导到检波器, 这些称为直达波 (面波);有些在地层中传播,遇到两种地层的分界面时 产生波的反射,在原来地层中形成一种新波, …

【算法——双指针】LeetCode 15 三数之和

题目描述: 解题思路:双指针 首先,按升序对数组进行排序。然后,我们可以用如下步骤求解: 初始化一个空的结果集result,用于存储找到的和为0的三元组。 遍历整个数组,直到倒数第三个元素&#xff…

基于APP数据爬取的运行环境

前提 数据爬取本就是“道高一尺,魔高一丈”;越往后,爬取越接近于真实,真实包含了真实的运行环境(不再是简单地伪造请求、User-Agent和Cookie等)和真实的操作流程。本文对APP的运行环境做了简单梳理以供参考…

python爬虫基于管道持久化存储操作

文章目录 基于管道持久化存储操作scrapy的使用步骤1.先转到想创建工程的目录下:cd ...2.创建一个工程3.创建之后要转到工程目录下4.在spiders子目录中创建一个爬虫文件5.执行工程setting文件中的参数 基于管道持久化存储的步骤:持久化存储1:保…

【Linux学习】05-1Linux上安装部署各类软件

Linux(B站黑马)学习笔记 01Linux初识与安装 02Linux基础命令 03Linux用户和权限 04Linux实用操作 05-1Linux上安装部署各类软件 文章目录 Linux(B站黑马)学习笔记前言05-1Linux上安装部署各类软件JDK安装部署Tomcat安装部署maven…

Matlab绘图函数subplot、tiledlayout、plot和scatter

一、绘图函数subplot subplot(m,n,p)将当前图窗划分为 mn 网格,并在 p 指定的位置创建坐标区。MATLAB按行号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,…