购物网站的排版,垂直网站建设方案,网站编辑,服务器网站建设教程视频教程今天看见了一个有意思的脚本Python批量实现Word、EXCLE、PPT转PDF文件。
因为我平时word用的比较的多#xff0c;所以深有体会#xff0c;具体怎么实现的我们就不讨论了#xff0c;因为这个去学了也没什么提升#xff0c;不然也不会当作脚本了。这里我将其放入了pyzjr库中…今天看见了一个有意思的脚本Python批量实现Word、EXCLE、PPT转PDF文件。
因为我平时word用的比较的多所以深有体会具体怎么实现的我们就不讨论了因为这个去学了也没什么提升不然也不会当作脚本了。这里我将其放入了pyzjr库中也方便大家进行调用。
你可以去下载pyzjr:
pip install pyzjr -i https://pypi.tuna.tsinghua.edu.cn/simple
调用方法
import pyzjr as pz# 实例化对象
Mpdf pz.Microsoft2PDF()
# 调用类的方法
Mpdf.Word2Pdf() # word - pdf
Mpdf.Excel2Pdf() # excel - pdf
Mpdf.PPt2Pdf() # ppt - pdf
Mpdf.WEP2Pdf() # word,excel,ppt - pdf
上面就是api的调用了统一会将文件存放在目标文件夹下新建的名为pdf文件夹中。
pyzjr中的源码
import win32com.client, gc, osclass Microsoft2PDF():Convert Microsoft Office documents (Word, Excel, PowerPoint) to PDF formatdef __init__(self,filePath )::param filePath: 如果默认是空字符,就默认当前路径self.flagW self.flagE self.flagP 1self.words []self.ppts []self.excels []if filePath :filePath os.getcwd()folder filePath \\pdf\\self.folder CreateFolder(folder,debugFalse)self.filePath filePathfor i in os.listdir(self.filePath):if i.endswith((.doc, docx)):self.words.append(i)if i.endswith((.ppt, pptx)):self.ppts.append(i)if i.endswith((.xls, xlsx)):self.excels.append(i)if len(self.words) 1:print(\n[pyzjr]:No Word files\n)self.flagW 0if len(self.ppts) 1:print(\n[pyzjr]:No PPT file\n)self.flagE 0if len(self.excels) 1:print(\n[pyzjr]:No Excel file\n)self.flagP 0def Word2Pdf(self):if self.flagW 0:return 0else:print(\n[Start Word -PDF conversion])try:print(Open Word Process...)word win32com.client.Dispatch(Word.Application)word.Visible 0word.DisplayAlerts Falsedoc Nonefor i in range(len(self.words)):print(i)fileName self.words[i] # file namefromFile os.path.join(self.filePath, fileName) # file addresstoFileName self.changeSufix2Pdf(fileName) # Generated file nametoFile self.toFileJoin(toFileName) # Generated file addressprint(Conversion: fileName in files...)try:doc word.Documents.Open(fromFile)doc.SaveAs(toFile, 17)print(Convert to: toFileName file completion)except Exception as e:print(e)print(All Word files have been printed)print(End Word Process...\n)doc.Close()doc Noneword.Quit()word Noneexcept Exception as e:print(e)finally:gc.collect()def Excel2Pdf(self):if self.flagE 0:return 0else:print(\n[Start Excel - PDF conversion])try:print(open Excel Process...)excel win32com.client.Dispatch(Excel.Application)excel.Visible 0excel.DisplayAlerts Falsewb Nonews Nonefor i in range(len(self.excels)):print(i)fileName self.excels[i]fromFile os.path.join(self.filePath, fileName)print(Conversion: fileName in files...)try:wb excel.Workbooks.Open(fromFile)for j in range(wb.Worksheets.Count): # Number of worksheets, one workbook may have multiple worksheetstoFileName self.addWorksheetsOrder(fileName, j 1)toFile self.toFileJoin(toFileName)ws wb.Worksheets(j 1)ws.ExportAsFixedFormat(0, toFile)print(Convert to: toFileName file completion)except Exception as e:print(e)# 关闭 Excel 进程print(All Excel files have been printed)print(Ending Excel process...\n)ws Nonewb.Close()wb Noneexcel.Quit()excel Noneexcept Exception as e:print(e)finally:gc.collect()def PPt2Pdf(self):if self.flagP 0:return 0else:print(\n[Start PPT -PDF conversion])try:print(Opening PowerPoint process...)powerpoint win32com.client.Dispatch(PowerPoint.Application)ppt Nonefor i in range(len(self.ppts)):print(i)fileName self.ppts[i]fromFile os.path.join(self.filePath, fileName)toFileName self.changeSufix2Pdf(fileName)toFile self.toFileJoin(toFileName)print(Conversion: fileName in files...)try:ppt powerpoint.Presentations.Open(fromFile, WithWindowFalse)if ppt.Slides.Count 0:ppt.SaveAs(toFile, 32)print(Convert to: toFileName file completion)else:print(Error, unexpected: This file is empty, skipping this file)except Exception as e:print(e)print(All PPT files have been printed)print(Ending PowerPoint process...\n)ppt.Close()ppt Nonepowerpoint.Quit()powerpoint Noneexcept Exception as e:print(e)finally:gc.collect()def WEP2Pdf(self):Word, Excel and PPt are all converted to PDF.If there are many files, it may take some timeprint(Convert Microsoft Three Musketeers to PDF)self.Word2Pdf()self.Excel2Pdf()self.PPt2Pdf()print(fAll files have been converted, you can find them in the {self.folder})def changeSufix2Pdf(self,file):将文件后缀更改为.pdfreturn file[:file.rfind(.)] .pdfdef addWorksheetsOrder(self,file, i):在文件名中添加工作表顺序return file[:file.rfind(.)] _worksheet str(i) .pdfdef toFileJoin(self, file):将文件路径和文件名连接为完整的文件路径return os.path.join(self.filePath, pdf, file[:file.rfind(.)] .pdf) 这里我对原先博主的代码进行了一定的优化使其可供我们调用。 这是控制台打印出来的信息我们可以发现在调用WEP2Pdf时如果当前文件夹中没有word的文件也能继续去转换。