iT邦幫忙

0

Python學習筆記: 將excel xls或xlsx檔批次轉成pdf檔

  • 分享至 

  • xImage
  •  

本文同步發表於小弟自架網站(非釣魚也無廣告,純分享):

微確幸資訊站

這次來分享將excel xls或xlsx檔批次轉成pdf檔!!

與之前分享的word doc或docx檔轉成pdf檔有點不同的是,
word檔用整頁模式看的結果,幾乎就是pdf轉檔後的結果。

excel檔案因為牽涉到可能有多個工作表,如果沒有特別指定,內定是處理存檔時打開的工作表。
另外一個要特別注意的是excel頁面可能大小不一,
一般沒列印需求,可能也沒特別設定列印的相關選項,

透過以下的程式雖然可以批次轉成excel檔,
但pdf會是你原始excel檔的列印結果。

所以在批次轉檔前要先確定列印的頁面結果,就是你要的pdf呈現結果。

首先看一下目標資料夾的狀況:
https://ithelp.ithome.com.tw/upload/images/20230531/20122335DVhpWORWXb.jpg

接下來就來用程式處理了:

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檔:已完成')

執行結果:
https://ithelp.ithome.com.tw/upload/images/20230531/20122335CWQJMQaFPn.jpg

目標資料夾處理後的結果:
https://ithelp.ithome.com.tw/upload/images/20230531/20122335frymoV97gF.jpg

以上即完成本次目標。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言