python實(shí)現(xiàn)word/excel/ppt批量轉(zhuǎn)pdf的示例代碼
今天看見了一個(gè)有意思的腳本Python批量實(shí)現(xiàn)Word、EXCLE、PPT轉(zhuǎn)PDF文件。
因?yàn)槲移綍r(shí)word用的比較的多,所以深有體會(huì),具體怎么實(shí)現(xiàn)的我們就不討論了,因?yàn)檫@個(gè)去學(xué)了也沒什么提升,不然也不會(huì)當(dāng)作腳本了。這里我將其放入了pyzjr庫(kù)中,也方便大家進(jìn)行調(diào)用。
你可以去下載pyzjr:
pip install pyzjr -i https://pypi.tuna.tsinghua.edu.cn/simple
調(diào)用方法:
import pyzjr as pz # 實(shí)例化對(duì)象 Mpdf = pz.Microsoft2PDF() # 調(diào)用類的方法 Mpdf.Word2Pdf() # word -> pdf Mpdf.Excel2Pdf() # excel -> pdf Mpdf.PPt2Pdf() # ppt -> pdf Mpdf.WEP2Pdf() # word,excel,ppt -> pdf
上面就是api的調(diào)用了,統(tǒng)一會(huì)將文件存放在目標(biāo)文件夾下新建的名為pdf文件夾中。
pyzjr中的源碼:
import win32com.client, gc, os
class Microsoft2PDF():
"""Convert Microsoft Office documents (Word, Excel, PowerPoint) to PDF format"""
def __init__(self,filePath = ""):
"""
:param filePath: 如果默認(rèn)是空字符,就默認(rèn)當(dāng)前路徑
"""
self.flagW = self.flagE = self.flagP = 1
self.words = []
self.ppts = []
self.excels = []
if filePath == "":
filePath = os.getcwd()
folder = filePath + '\\pdf\\'
self.folder = CreateFolder(folder,debug=False)
self.filePath = filePath
for 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 = 0
if len(self.ppts) < 1:
print("\n[pyzjr]:No PPT file\n")
self.flagE = 0
if len(self.excels) < 1:
print("\n[pyzjr]:No Excel file\n")
self.flagP = 0
def Word2Pdf(self):
if self.flagW == 0:
return 0
else:
print("\n[Start Word ->PDF conversion]")
try:
print("Open Word Process...")
word = win32com.client.Dispatch("Word.Application")
word.Visible = 0
word.DisplayAlerts = False
doc = None
for i in range(len(self.words)):
print(i)
fileName = self.words[i] # file name
fromFile = os.path.join(self.filePath, fileName) # file address
toFileName = self.changeSufix2Pdf(fileName) # Generated file name
toFile = self.toFileJoin(toFileName) # Generated file address
print("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 = None
word.Quit()
word = None
except Exception as e:
print(e)
finally:
gc.collect()
def Excel2Pdf(self):
if self.flagE == 0:
return 0
else:
print("\n[Start Excel -> PDF conversion]")
try:
print("open Excel Process...")
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = 0
excel.DisplayAlerts = False
wb = None
ws = None
for 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 worksheets
toFileName = 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)
# 關(guān)閉 Excel 進(jìn)程
print("All Excel files have been printed")
print("Ending Excel process...\n")
ws = None
wb.Close()
wb = None
excel.Quit()
excel = None
except Exception as e:
print(e)
finally:
gc.collect()
def PPt2Pdf(self):
if self.flagP == 0:
return 0
else:
print("\n[Start PPT ->PDF conversion]")
try:
print("Opening PowerPoint process...")
powerpoint = win32com.client.Dispatch("PowerPoint.Application")
ppt = None
for 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, WithWindow=False)
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 = None
powerpoint.Quit()
powerpoint = None
except 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 time
"""
print("Convert Microsoft Three Musketeers to PDF")
self.Word2Pdf()
self.Excel2Pdf()
self.PPt2Pdf()
print(f"All files have been converted, you can find them in the {self.folder}")
def changeSufix2Pdf(self,file):
"""將文件后綴更改為.pdf"""
return file[:file.rfind('.')] + ".pdf"
def addWorksheetsOrder(self,file, i):
"""在文件名中添加工作表順序"""
return file[:file.rfind('.')] + "_worksheet" + str(i) + ".pdf"
def toFileJoin(self, file):
"""將文件路徑和文件名連接為完整的文件路徑"""
return os.path.join(self.filePath, 'pdf', file[:file.rfind('.')] + ".pdf")這里我對(duì)原先博主的代碼進(jìn)行了一定的優(yōu)化,使其可供我們調(diào)用。

這是控制臺(tái)打印出來(lái)的信息,我們可以發(fā)現(xiàn)在調(diào)用WEP2Pdf時(shí),如果當(dāng)前文件夾中沒有word的文件也能繼續(xù)去轉(zhuǎn)換。
到此這篇關(guān)于python實(shí)現(xiàn)word/excel/ppt批量轉(zhuǎn)pdf的示例代碼的文章就介紹到這了,更多相關(guān)python pdf內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python腳本自動(dòng)化實(shí)現(xiàn)Word轉(zhuǎn)PDF全攻略(建議收藏)
- Python實(shí)現(xiàn)Word批量轉(zhuǎn)PDF的小工具
- Python將Word文檔轉(zhuǎn)為PDF的兩種方法
- Python批量實(shí)現(xiàn)Word/EXCEL/PPT轉(zhuǎn)PDF
- Python實(shí)現(xiàn)批量將word轉(zhuǎn)換成pdf
- Python實(shí)現(xiàn)批量word文檔轉(zhuǎn)pdf并統(tǒng)計(jì)其頁(yè)碼
- Python自動(dòng)化辦公之Word轉(zhuǎn)PDF的實(shí)現(xiàn)
- Python實(shí)現(xiàn)Word轉(zhuǎn)PDF全攻略(從入門到實(shí)戰(zhàn))
相關(guān)文章
python計(jì)算數(shù)字或者數(shù)組的階乘的實(shí)現(xiàn)
本文主要介紹了python計(jì)算數(shù)字或者數(shù)組的階乘,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
PyTorch快速搭建神經(jīng)網(wǎng)絡(luò)及其保存提取方法詳解
本篇文章主要介紹了PyTorch快速搭建神經(jīng)網(wǎng)絡(luò)及其保存提取方法詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python爬蟲:Request Payload和Form Data的簡(jiǎn)單區(qū)別說(shuō)明
這篇文章主要介紹了Python爬蟲:Request Payload和Form Data的簡(jiǎn)單區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
python PyQt5中單行文本輸入控件QLineEdit用法詳解
在PyQt5的GUI編程中,QLineEdit控件是一個(gè)用于輸入和編輯單行文本的部件,它提供了豐富的功能和靈活性,可以輕松地實(shí)現(xiàn)用戶輸入的捕獲、驗(yàn)證和格式化等功能,本文將通過(guò)實(shí)際案例詳細(xì)介紹QLineEdit控件的常用方法,需要的朋友可以參考下2024-08-08
python3基于TCP實(shí)現(xiàn)CS架構(gòu)文件傳輸
這篇文章主要為大家詳細(xì)介紹了python3基于TCP實(shí)現(xiàn)CS架構(gòu)文件傳輸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
pytorch 常用函數(shù) max ,eq說(shuō)明
這篇文章主要介紹了pytorch 常用函數(shù) max eq說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
python通過(guò)安裝itchat包實(shí)現(xiàn)微信自動(dòng)回復(fù)收到的春節(jié)祝福
這篇文章主要介紹了python通過(guò)安裝itchat包實(shí)現(xiàn)微信自動(dòng)回復(fù)收到的春節(jié)祝福,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-01-01
用python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的驗(yàn)證碼
這篇文章主要介紹了用python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的驗(yàn)證碼的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12

