這次來分享將excel xls或xlsx檔批次轉成pdf檔!!
與之前分享的word doc或docx檔轉成pdf檔有點不同的是,
word檔用整頁模式看的結果,幾乎就是pdf轉檔後的結果。
excel檔案因為牽涉到可能有多個工作表,如果沒有特別指定,內定是處理存檔時打開的工作表。
另外一個要特別注意的是excel頁面可能大小不一,
一般沒列印需求,可能也沒特別設定列印的相關選項,
透過以下的程式雖然可以批次轉成excel檔,
但pdf會是你原始excel檔的列印結果。
所以在批次轉檔前要先確定列印的頁面結果,就是你要的pdf呈現結果。
首先看一下目標資料夾的狀況:
接下來就來用程式處理了:
import os
import win32com.client as win32
# 設定目標資料夾
file_path = "d:\\temp\\test"
# 找出所有doc檔做成list
files = [x for x in os.listdir(file_path) if x.endswith((".xls",".xlsx"))]
#print(files)
for file in files:
# in_file為要處理的excel檔案名稱加路徑
in_file = os.path.join(file_path, file)
# 處理完的檔案,附檔名改成pdf
out_file = os.path.join(file_path, os.path.splitext(file)[0] + ".pdf")
print(f'正在處理{in_file}')
print('----------------------')
# excel的檔案先查看列印的頁面,是否是自己要的分頁方式,免得頁面被分割
excel = win32.DispatchEx("Excel.Application")
excel.Interactive = False
excel.Visible = False
workbook = excel.Workbooks.Open(in_file, None, True)
workbook.ActiveSheet.ExportAsFixedFormat(0, out_file) # 0 代表 PDF檔
# 移除excel檔案(非必要)
#os.remove(in_file)
excel.Quit()
print('所有excel檔轉換pdf檔:已完成')
目標資料夾處理後的結果:
以上即完成本次目標。