在Python中doc转docx,xls转xlsx,ppt转pptx(Windows)

说明:

  • 首次发表日期:2024-07-18
  • 参考pypi包: doc2docx

缘起

我们一般使用Python开发RAG应用,或者使用基于Python开发的开源RAG工具,比如Dify。然而由于Python中对.doc.ppt格式的文件支持不够好,通常我们需要将文件格式转换为.docx.pptx,以便之后RAG对这些文档进行解析。

通常,我们可以会直接打开Office软件,手动将文件另存为.docx或者.pptx格式。这个过程,我们可以使用Python进行自动化。

在开始之前,首先需要确保微软的Office软件有正常安装好。

依赖

安装pywin32包:

pip install pywin32

导入依赖库:

import win32com.client
from pathlib import Path

doc转docx

参考: https://learn.microsoft.com/en-us/office/vba/api/word.saveas2

def doc2docx(input_filepath, output_filepath, keep_active = True):
input_filepath = Path(input_filepath).resolve()
output_filepath = Path(output_filepath).resolve()
word_app = win32com.client.Dispatch("Word.Application")
doc = word_app.Documents.Open(str(input_filepath))
try:
doc.SaveAs2(str(output_filepath), FileFormat=16)
except:
raise
finally:
doc.Close(0) if not keep_active:
word_app.Quit()

ppt转pptx

参考:

def ppt2pptx(input_filepath, output_filepath, keep_active = True):
input_filepath = Path(input_filepath).resolve()
output_filepath = Path(output_filepath).resolve()
ppt_app = win32com.client.Dispatch("Powerpoint.Application")
presentation = ppt_app.Presentations.Open(str(input_filepath), 0, 0, 0)
try:
presentation.SaveAs(str(output_filepath), FileFormat=24)
except:
raise
finally:
presentation.Close() if not keep_active:
ppt_app.Quit()

xls转xlsx

参考:

def convert_xls2xlsx(input_filepath, output_filepath, keep_active = True):
input_filepath = Path(input_filepath).resolve()
output_filepath = Path(output_filepath).resolve()
excel_app = win32com.client.Dispatch("Excel.Application")
sheet = excel_app.Workbooks.Open(str(input_filepath))
try:
sheet.SaveAs(str(output_filepath), FileFormat=51)
except:
raise
finally:
sheet.Close(0) if not keep_active:
excel_app.Quit()

在Python中doc转docx,xls转xlsx,ppt转pptx(Windows)的更多相关文章

  1. 在word中doc与docx的区别是什么(整理)

    在word中doc与docx的区别是什么(整理) docx 是Office2007使用的,是用新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母x(即.do ...

  2. Python将excel文件从xls转换为xlsx

    本文使用场景:将一个xls格式Excel文件转换为xlsx文件格式.接下来将一步一步演示该操作.你也可以对代码进行修改使其适用于你所需的场景. 安装Python3 首先需要安装Python,我这里安装 ...

  3. IOS 使用webview 显示 doc/docx/xls/pdf等

    在一款项目里添加阅读各种文档功能 那么对在线的文档或者是下载后的文档 进行阅读,比如 doc/docx/xls/pdf等文件 有两种方法总结如下: 1. - (void)viewDidLoad { [ ...

  4. Python:读取 .doc、.docx 两种 Word 文件简述及“Word 未能引发事件”错误

    概述 Python 中可以读取 word 文件的库有 python-docx 和 pywin32. 下表比较了各自的优缺点.   优点 缺点 python-docx 跨平台 只能处理 .docx 格式 ...

  5. Python中如何读取xls中的数据

    要想读取EXCEL中的数据,首先得下载xlrd包,地址:https://pypi.python.org/pypi/xlrd  安装方法:下载解压后,利用windows  dos命令进入解压目录eg,c ...

  6. Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据

    背景 Python中,想要打开已经存在的excel的xls文件,然后在最后新的一行的数据. 折腾过程 1.找到了参考资料: writing to existing workbook using xlw ...

  7. python中通过xlwt、xlrd和xlutils操作xls

    xlwt模块用于在内存中生成一个xls/xlsx对象,增加表格数据,并把内存中的xls对象保存为本地磁盘xls文件; xlrd模块用于把本地xls文件加载到内存中,可以读取xls文件的表格数据,查询x ...

  8. poi读写doc和docx

    https://www.cnblogs.com/always-online/p/4800131.html POI是 Apache 旗下一款读写计算机中的 word 以及 excel 文件的工具. po ...

  9. 用 ElementTree 在 Python 中解析 XML

    用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...

  10. Python中的属性管理

    Python管 理属性的方法一般有三种:操作符重载(即,__getattr__.__setattr__.__delattr__和 __getattribute__,有点类似于C++中的重载操作符).p ...

随机推荐

  1. aspnetcore插件开发dll热加载 二

    这一篇文章应该是个总结. 投简历的时候是不是有人问我有没有abp的开发经历,汗颜! 在各位大神的尝试及自己的总结下,还是实现了业务和主机服务分离,通过dll动态的加载卸载,控制器动态的删除添加. 项目 ...

  2. 【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)

    在使用App Service服务部署业务应用,因为有些第三方的接口需要调用者携带TLS/SSL证书(X509 Certificate),在官方文档中介绍了两种方式在代码中使用证书: 1) 直接使用证书 ...

  3. 椭圆曲线密码学(ECC)加解密,附带python代码

    想起来很久没写博客了,刚好今天要写实验报告,随便把之前的也完成吧 1.椭圆曲线概念 椭圆曲线在经过化解后,可以用这条式子表达:E:y²=x³+ax+b 其背后的密码学原理,是基于椭圆曲线离散对数问题, ...

  4. 国产大语言模型ChatGLM3本地搭建、使用和功能扩展

    1.官网 ChatGLM3 2.下载ChatGLM3源码 直接在https://github.com/THUDM/ChatGLM3,下载源码 3.下载模型 如果显卡8G一下建议下载ChatGLM3-6 ...

  5. Qt-不规则窗口

    1  简介 参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=44 实现效果如下: 图片背景透明,可通过鼠标左键拖动图片(移动时以左上角为坐标),右 ...

  6. NET9 提供HybridCache解决分布式缓存中存在的远程链接&序列化带来的性能问题

    下面是一个标准的IDistributedCache用例: public class SomeService(IDistributedCache cache) { public async Task&l ...

  7. fontawesome-webfont.woff:1 Failed to load resource: the server responded with a status of 404 ()

    fontawesome-webfont.woff2:1 Failed to load resource: the server responded with a status of 404 ()fon ...

  8. 消息sms 邮箱/手机号/push发送的方案 & 定时任务xxlJob灵活度 & 泛型和发送的模板类设计

    消息sms 邮箱/手机号/push发送的方案 & 定时任务xxlJob灵活度 & 泛型和发送的模板类设计 1.消息sms 邮箱/手机号/push发送的方案 1.判断收件人地址是否为空, ...

  9. getRefs is undefined html vue2项目 报错

    vue2项目提示 getRefs is undefined 在div上面写了,ref,还写了v-if 然后再watch中操作了 ref 导致报错. 分析: 组件因为v-if 为 false 没有注册和 ...

  10. 深入了解身份认证和授权机制,看看API请求到底发生了什么?

    前段时间写了一篇基于.NetCore环境使用IdentityServer4为API接口鉴权的文章,更多的是从快速上手的角度描述了IdentityServer4的使用.后续使用过程中,自己有了一些其他想 ...