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

在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()
posted @   shizidushu  阅读(171)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
点击右上角即可分享
微信分享提示