在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. Winform程序在VS中打包成安装程序(带卸载)

    场景 在VS中进行Winform开发时,可以直接在项目上右击选择生成 则会在项目的bin目录下直接生成exe等文件,此时将这个文件夹直接整个复制到别的地方就可以运行. 但是如果将其做成安装包安装的形式 ...

  2. 微信小程序预约视频号直播

    一.概述 微信小程序提供了可以唤起预约视频号直播弹窗的接口 reserveChannelsLive,该接口接收一个参数 noticeId,通过 getChannelsLiveNoticeInfo 接口 ...

  3. 关于《Java并发编程之线程池十八问》的补充内容

    一.写在开头 在上一篇文章我们写<Java并发编程之线程池十八问>的时候,鉴于当时的篇幅已经过长,很多内容就没有扩展了,在这篇文章里对一些关键知识点进行对比补充. 二.Runnable v ...

  4. NOIP模拟58

    T1 Lesson5 ! 解题思路 首先对于整张图求出拓扑序,然后顺着拓扑序其实也就是顺着边的方向,更新最长路,也就是从 1 节点到达这个节点的最长路. 然后再逆着拓扑序,反向求一下最长路,也就是从这 ...

  5. (八十七)c#Winform自定义控件-朝上的瓶子

    官网 http://www.hzhcontrols.com/ 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kw ...

  6. Windows文件管理优化-实用电脑软件(一)

    RX文件管理器 (稀奇古怪的小软件,我推荐,你点赞!) 日后更新涉及:电脑.维护.清理.小工具.手机.APP.IOS.从WEB.到到UI.从开发,设计:诚意寻找伙伴(文编类.技术类.思想类)共编,共进 ...

  7. asp.net上传Excel文件并读取内容,自定义上传控件样式

    一.页面增加上传控件,并在上传时判断是否是Excel文件(根据后缀名判断): 1 <table> 2 <tr> 3 <td> 4 <span style=&q ...

  8. LLM应用实战:当图谱问答(KBQA)集成大模型(三)

    1. 背景 最近比较忙(也有点茫),本qiang~想切入多模态大模型领域,所以一直在潜心研读中... 本次的更新内容主要是响应图谱问答集成LLM项目中反馈问题的优化总结,对KBQA集成LLM不熟悉的客 ...

  9. Apollo config配置中心 配置列表和map DEMO

    Apollo config配置中心 配置列表和map DEMO#支持可扩展 Apollo配置 apollo中配置如下: defaultId = 100,200 chooseId = {"30 ...

  10. C++11智能指针 unique_ptr、shared_ptr、weak_ptr与定制删除器

    目录 智能指针 场景引入 - 为什么需要智能指针? 内存泄漏 什么是内存泄漏 内存泄漏的危害 内存泄漏分类 如何避免内存泄漏 智能指针的使用及原理 RAII 简易例程 智能指针的原理 智能指针的拷贝问 ...