首页 > 系统相关 >在Python中doc转docx,xls转xlsx,ppt转pptx(Windows)

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

时间:2024-07-18 20:44:16浏览次数:10  
标签:pptx xlsx docx filepath doc app ppt input output

在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()

标签:pptx,xlsx,docx,filepath,doc,app,ppt,input,output
From: https://www.cnblogs.com/shizidushu/p/18310397

相关文章

  • xlrd.biffh.XLRDError: Excel xlsx file; not supported
    问题描述今天在测试python读取excel文件的时候出现了异常Traceback(mostrecentcalllast):File"E:/worksp_py/hardwary/100day/thirtfive/testxml.py",line5,in<module>wb=xlrd.open_workbook("./test.xlsx")File"E:\Tools\anaconda3......
  • qxlsx 冻结单元格(freeze fix)
    在使用qxlsx过程中,导出的Excel要求有行列冻结功能(https://github.com/QtExcel/QXlsx)。没找到库中代码有此功能,后来在讨论组组中,发现了一个大神把这个问题解决了(https://github.com/QtExcel/QXlsx/discussions/200)。在此记录一下。吧QXlsx库的源代码及更改上传到此:https://fi......
  • Python-pptx学习随笔
    引言++最近有用到做自动化ppt相关的功能,简单记录一下实现过程的部分操作。++0pptx的结构pptx的存储本质上是一颗树flowchartLRpptx-->slides-->shapes-->组内shapespptx-->幻灯片-->模块形状-->复合形状内部的形状1相关操作1.1创建一个pptx类fr......
  • doc转docx(java-python)
    本文功能借助python实现的doc转docx,调研了一下开源的工具或者类库转换效果不理想,所以选择python 1./resources/convert.py(py文件放到resources下)importargparsefromdoc2docximportconvertdefconvert_doc_to_docx(docFilePath,docxFilePath):convert(docFi......
  • docx转html方案验证-支持latex,表格,图片(aspose)
    方案总结:1:poi(html属性支持)存在一个bug,对于table中的cell中既有文本又有图片的在转化后图片丢失2:tika(主要是提取内容,转换出来的html不太好)3.openoffice(依赖安装,转出的html不太好)4.aspose(功能强大但是付费),但也可以免费使用,缺点:不支持扩展原因代码不是开源的5.mamm......
  • docx转html方案验证-支持latex,表格,图片(poi)
    方案总结:1:poi(html属性支持)存在一个bug,对于table中的cell中既有文本又有图片的在转化后图片丢失2:tika(主要是提取内容,转换出来的html不太好)3.openoffice(依赖安装,转出的html不太好)4.aspose(功能强大但是付费),但也可以免费使用,缺点:不支持扩展原因代码不是开源的5.mamm......
  • 通过ole将docx转换为pdf
    packagemainimport( "log" "os" "path/filepath" ole"github.com/go-ole/go-ole" "github.com/go-ole/go-ole/oleutil")//NOTE:ThisexamplecanonlyrunonWindowsandrequiresthatWordbeinstalle......
  • python-docx库 写入docx时中文不适配问题,中文异常问题解决办法。
    python-docx库写入docx时中文不适配问题,中文异常问题解决办法。通过以下方法可以成功将正文修改为宋体字体。这个是全文设置。fromdocx.oxml.nsimportqndoc=Document()doc.styles['Normal'].font.name=u'宋体'doc.styles['Normal']._element.rPr.rFonts.set(qn('w:......
  • 批量替换doc、xls、xlsx文件内容
    docx类:importosfromdocximportDocumentfromopenpyxlimportload_workbookdefreplace_string_in_docx(file_path,old_string,new_string):doc=Document(file_path)forparagraphindoc.paragraphs:ifold_stringinparagraph.text:......
  • 前端实现根据模版导出word【docxtemplater】
    场景有的时候我们需要根据后端提供的数据,然后结合word模版来生成word。我们可以使用第三方库docxtemplater效果依赖说明1、docxtemplater:这个插件可以通过预先写好的word,excel等文件模板生成对应带数据的文件2、pizzip:这个插件用来创建,读取或编辑.zip的文件(同步的,还有一个......