背景
对于office,python都有对应的自动化库这个就不过多赘述了,但是它并不兼容WPS格式的。根据在项目开发时的经验,wps的文件格式中.wps对应的是word,.dps对应的是ppt,.et对应的是excel等等这些,我就把他们称之为类word格式,类ppt格式,类excel格式吧。
原本貌似wps是有一个python的自动化库的,但好像早就废弃了,各种查找也没有找到一个现成的直接自动化的方案,于是换了一种思路…
曲线救国
既然没有办法直接自动化,那为啥不把所有类office文件全都转为office的文件呢?
这里我用到了一个核心的库comtypes,我就不废话了,直接上代码吧
注意:前提是你电脑上有word,powerpoint,excel三个软件
word
import comtypes.client
def convert_doc_to_docx(doc_path):
"""
转为docx
:param ppt_path:
:param pptx_path:
:return:
"""
word = comtypes.client.CreateObject("Word.Application")
doc = word.Documents.Open(doc_path)
doc.SaveAs("demo.docx", 16) # 16 表示保存为 docx 格式
doc.Close()
word.Quit()
ppt
import comtypes.client
def convert_ppt_to_pptx(ppt_path):
"""
转为pptx
:param ppt_path: 原类ppt文件路径
"""
powerpoint = comtypes.client.CreateObject("Powerpoint.Application")
powerpoint.Visible = True
presentation = powerpoint.Presentations.Open(ppt_path)
presentation.SaveAs("demo.pptx", 24) # 24 表示保存为 pptx 格式
presentation.Close()
powerpoint.Quit()
excel
import comtypes.client
def convert_xls_to_xlsx(xls_path):
"""
将xls文件转为xlsx格式
:param xls_path: 输入的xls文件路径
"""
excel = comtypes.client.CreateObject("Excel.Application")
excel.Visible = False
workbook = excel.Workbooks.Open(xls_path)
workbook.SaveAs("demo.xlsx", FileFormat=51) # 51 表示xlsx格式
workbook.Close()
excel.Quit()
随后,你便可以使用下面的库去对转换后的office文件进行自动化操作了。
from docx import Document
from pptx import Presentation
from openpyxl import load_workbook
推广
感兴趣的可以关注下本人的公众号:飞羽技术工坊。