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

在上次,我们对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 docxdocxFile = 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 docxdocxFile = 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属性,赋值给变量shapefor shape in slide.shapes:# 判断形状中是否有文本框if shape.has_text_frame == True:# 读取形状中的文本框,并赋值给变量textFrametextFrame = shape.text_frame# for循环遍历文本框内的所有段落# 赋值给变量paragraphfor paragraph in textFrame.paragraphs:# for循环遍历段落中的所有样式块# 赋值给变量runfor 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属性,赋值给变量shapefor shape in slide.shapes:# 判断形状中是否有文本框if shape.has_text_frame == True:# 读取形状中的文本框,并赋值给变量textFrametextFrame = shape.text_frame# for循环遍历文本框内的所有段落# 赋值给变量paragraphfor paragraph in textFrame.paragraphs:# for循环遍历段落中的所有样式块# 赋值给变量runfor 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.rhkb.cn/news/145163.html

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

相关文章

安卓机型不需要解锁bl 不需要root 即可安装模块 框架 VirtualXposed使用步骤分析

​​​​​​安卓玩机教程---全机型安卓4----安卓12 框架xp edx lsp安装方法【一】 安卓系列机型 框架LSP 安装步骤 支持多机型 LSP框架通用安装步骤 通过以上两个博文基本可以了解手机正常安装框架的步骤。但很多机型局限于不能解锁bl和root,那么这些机型能不能使…

Unity之Hololens如何实现3D物体交互

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…

MySQL体系结构和四层架构介绍

MySQL体系结构图如下: 四层介绍 1. 连接层: 它的主要功能是处理客户端与MySQL服务器之间的连接(比如Java应用程序通过JDBC连接MySQL)。当客户端应用程序连接到MySQL服务器时,连接层对用户进行身份验证、建立安全连接并管理会话状态。它还处理…

notepad++配置python2环境

(1)python2版本下载:Index of /ftp/python/2.7.8/https://www.python.org/ftp/python/2.7.8/ (2) 配置notepad环境 1.打开Notepad,点击“插件”-“插件管理器”,在“可用”选项卡中&#xff0c…

【C/C++】C/C++面试八股

C/C面试八股 C和C语言的区别简单介绍一下三大特性多态的实现原理虚函数的构成原理虚函数的调用原理虚表指针在什么地方进行初始化的?构造函数为什么不能是虚函数虚函数和纯虚函数的区别抽象类类对象的对象模型内存对齐是什么?为什么要内存对齐static关键…

2023年上海市安全员B证证模拟考试题库及上海市安全员B证理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年上海市安全员B证证模拟考试题库及上海市安全员B证理论考试试题是由安全生产模拟考试一点通提供,上海市安全员B证证模拟考试题库是根据上海市安全员B证最新版教材,上海市安全员B证大纲整理…

金融生产存储亚健康治理:升级亚健康 3.0 ,应对万盘规模的挑战

随着集群规模的不断扩大,硬盘数量指数级上升,信创 CPU 和操作系统、硬盘多年老化、物理搬迁等多种复杂因素叠加,为企业的存储亚健康管理增加了新的挑战。 在亚健康 2.0 的基础上,星辰天合在 XSKY SDS V6.2 实现了亚健康 3.0&#…

git之merge和rebase的区别

准备 创建仓库 test-01文件 test-02文件 创建test01分支和test02分支 这里我们使用idea打开源代码 test02分支同操作 大致操作 test01分支对文件test01文件操作: 1.添加内容:test01第一次修改1 2.git commit 3.添加内容: test01第二次…

基于监督学习的多模态MRI脑肿瘤分割,使用来自超体素的纹理特征(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

picoctf_2018_got_shell

picoctf_2018_got_shell Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000)32位,只开了NX int __cdecl __noreturn main(int argc, const char **argv, const char **envp) {_DWOR…

蓝桥杯打卡Day15天

文章目录 买不到的数目错误票据 一、买不到的数目OJ链接 本题思路:引理:给定a,b,若dgcd(a,b)>1 ,则一定不能凑出最大数。结论:如果 a,b均是正整数且互质,那么由 axby,x≥0,y≥0 不能凑出的最大数是 ab−a−b。 证…

什么是Spring Bean?作用域有哪些

Spring Bean详解:作用域与示例 Spring框架是一个强大的Java开发框架,它提供了大量的功能和组件来简化企业级应用程序的开发。其中,Spring Bean是Spring框架中的一个核心概念,它扮演着重要的角色,用于管理和组织应用程…

FreeRTOS(以STM32F1系列为例子)

目录 任务管理任务函数任务控制块顶层任务状态创建任务xTaskCreatexTaskCreateStaticxTaskCreateRestricted 任务优先级和心跳设置心跳设置优先级概述vTaskPrioritySetuxTaskPriorityGet 非运行态扩充阻塞态vTaskDelay挂起状态vTaskSuspend就绪状态完整的状态转换图延迟函数vTa…

redis-设置从节点

节点结构 节点配置文件 主节点 不变 6380节点 port 6380 slaveof 127.0.0.1 63796381节点 port 6381 slaveof 127.0.0.1 6380启动 指定配置文件的方式启动 D:\jiqun\redis\Redis-6380>redis-server.exe redis.windows.conf启动时,会触发同步数据命令 主节点…

在Qt中,怎么获取到在mainwindow.ui文件中添加的控件

2023年9月30日,周六晚上 假设我在mainwindow.ui中添加了一个名为textEdit的QTextEdit对象 在mainwindow.cpp中,可以通过ui对象来获取到这个控件

Spring MVC 中的国际化和本地化

Spring MVC 中的国际化和本地化 国际化(Internationalization,简称i18n)和本地化(Localization,简称l10n)是构建多语言应用程序的重要概念。Spring MVC提供了丰富的支持,使开发人员能够轻松地处…

(三) gitblit管理员手册

(一)gitblit安装教程 (二) gitblit用户使用教程 (三) gitblit管理员手册 目录 权限管理创建仓库时创建用户普通用户 管理员用户访问限制和访问权限仓库创建权限分配 Teams普通组管理员组 参考资料 权限管理 创建仓库时 选择指定的人员查看,克隆,推送 不允许fork 对应Anonymo…

idea Springboot 高校科研资源共享系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 高校科研资源共享系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发), 系统具有完整的源代码和数据…

Lua学习笔记:require非.lua拓展名的文件

前言 本篇在讲什么 Lua的require相关的内容 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉 ♠…

基于vue+Element Table Popover 弹出框内置表格的封装

文章目录 项目场景:实现效果认识组件代码效果分析 封装:代码封装思路页面中使用 项目场景: 在选择数据的时候需要在已选择的数据中对比选择,具体就是点击一个按钮,弹出一个小的弹出框,但不像对话框那样还需…