Python Excel 轉換 PDF 教學指南:多平台方法比較、完整範例與常見問題解析

本指南詳盡介紹Python實現Excel轉PDF的多種主流方法,涵蓋安裝環境、完整範例、格式設定、批次處理、常見錯誤與FAQ,協助專案管理與知識工作者優化自動化報表流程。

🧮 還在用 Excel 管理專案?試試這些更聰明的工具 🚀

從 Excel 升級到專業專案管理 × 自動化平台

還在用 Excel 追進度?monday.com 幫你把任務、時程、甘特圖、報表全部自動化! 支援 Excel 一鍵匯入,輕鬆轉換成更直覺的視覺化專案看板。 全球 22.5 萬家公司愛用,AI 輔助讓團隊溝通更順暢。
⭐ 最多人使用

從任務到 OKR,一站式專案與團隊協作平台

整合文件、OKR、任務與自動化流程,AI 助你更快完成工作。 也支援從 Excel 匯入專案資料。

輕鬆整理文件 × 規劃專案 × 建立資料庫

Notion AI 幫你自動生成 SOP、專案摘要與任務追蹤頁面。 從 Excel 匯入表格,打造你自己的工作空間。

Python Excel 轉換 PDF 教學總覽

在專案管理、團隊協作與數據分析等工作場景中,將Excel檔案轉換為PDF格式是一項常見需求。PDF格式具備不可編輯、跨平台易於分享的特性,適合用於報表、審核、客戶溝通等場合。透過Python自動化轉檔,不僅能節省大量手動操作時間,也能結合自動化流程,提升團隊效率。

本教學將從多種主流方法切入,逐步解析安裝、程式範例、格式設定、批次處理與常見問題,協助你根據實際需求選擇最合適的解決方案。

常見Excel轉PDF方法比較

不同的Python方法適用於不同平台與需求。以下表格整理主流方案的比較:

方法 適用平台 需安裝軟體 支援格式 批次處理 格式美化 難易度 特色與限制
pdfkit + wkhtmltopdf Windows/Mac/Linux wkhtmltopdf xls/xlsx 支援 跨平台、需額外安裝wkhtmltopdf
win32com Windows Excel xls/xlsx 支援 需安裝Excel、僅限Windows
fpdf 全平台 xls/xlsx 支援 純Python、格式需自行設計
openpyxl + reportlab 全平台 xlsx 支援 純Python、格式自訂、較彈性

選擇建議:
– 需高度格式還原、跨平台:建議pdfkit + wkhtmltopdf
– 僅限Windows且已安裝Excel:可用win32com,操作簡單
– 追求純Python、格式自訂:可考慮fpdf或openpyxl + reportlab

方法一:使用pdfkit與wkhtmltopdf(跨平台推薦)

前置準備與環境需求

  • 適用平台:Windows、Mac、Linux
  • Python版本:建議3.7以上
  • 需安裝:pandas、openpyxl、pdfkit(Python套件),wkhtmltopdf(系統工具)

各套件用途說明:
– pandas:讀取與處理Excel資料
– openpyxl:支援讀取xlsx格式
– pdfkit:將HTML轉換為PDF
– wkhtmltopdf:實際執行HTML轉PDF的底層工具

安裝步驟詳解

  1. 安裝Python套件(於命令列執行):
    pip install pandas openpyxl pdfkit

  2. 安裝wkhtmltopdf

  3. 前往 wkhtmltopdf官方下載頁 下載對應作業系統版本
  4. 安裝後,確認wkhtmltopdf已加入系統PATH,或記下安裝路徑

  5. 常見安裝錯誤與排查

  6. 找不到wkhtmltopdf:確認安裝路徑已加入環境變數,或於程式中指定完整路徑
  7. 安裝權限問題:以管理員權限安裝,或於終端機提升權限

Excel轉PDF完整範例程式碼

以下範例示範將單一Excel檔案轉換為PDF,並支援多工作表、批次處理:

import pandas as pd
import pdfkit
import os

# wkhtmltopdf安裝路徑(如未在PATH,請指定完整路徑)
config = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf')  # Mac/Linux範例
# Windows範例:config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')

def excel_to_pdf(excel_path, pdf_path):
    # 讀取所有工作表
    xls = pd.ExcelFile(excel_path)
    html_list = []
    for sheet in xls.sheet_names:
        df = pd.read_excel(xls, sheet_name=sheet)
        html = df.to_html(index=False, border=1)
        html_list.append(f'<h2>{sheet}</h2>{html}')
    # 合併所有工作表HTML
    full_html = "<html><body>" + "".join(html_list) + "</body></html>"
    # 轉換為PDF
    pdfkit.from_string(full_html, pdf_path, configuration=config)

# 單檔轉換
excel_to_pdf('sample.xlsx', 'output.pdf')

# 批次轉換資料夾內所有Excel檔
folder = 'excel_folder'
for file in os.listdir(folder):
    if file.endswith('.xlsx') or file.endswith('.xls'):
        excel_path = os.path.join(folder, file)
        pdf_path = os.path.join(folder, file.rsplit('.', 1)[0] + '.pdf')
        excel_to_pdf(excel_path, pdf_path)

格式美化與頁面設定

  • 調整表格樣式:可自訂to_html()產生的HTML,加上CSS樣式提升美觀
  • 設定PDF頁面尺寸、橫直向:pdfkit支援options參數,如:
    python
    options = {
    'page-size': 'A4',
    'orientation': 'Landscape', # 或 'Portrait'
    'encoding': "UTF-8"
    }
    pdfkit.from_string(full_html, pdf_path, configuration=config, options=options)
  • 加入頁首/頁尾、公司Logo:可於HTML模板中插入相關元素

常見問題與錯誤排查

  • wkhtmltopdf未安裝或路徑錯誤:請確認安裝並於pdfkit.configuration指定正確路徑
  • Excel格式不支援:xls需安裝xlrd,xlsx建議使用openpyxl
  • 轉檔後格式跑掉:調整to_html()參數,或自訂HTML/CSS
  • 中文字亂碼:確保HTML指定UTF-8編碼,或於wkhtmltopdf安裝中文字型

方法二:使用win32com(僅限Windows)

適用情境與限制

  • 僅支援Windows
  • 需安裝Microsoft Excel
  • 適合需高度還原Excel格式的用戶

安裝與範例程式碼

  1. 安裝pywin32套件
    pip install pywin32

  2. 範例程式碼(單檔與批次處理):

import win32com.client as win32
import os

def excel_to_pdf_win(excel_path, pdf_path):
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    wb = excel.Workbooks.Open(excel_path)
    ws = wb.Worksheets
    for sheet in ws:
        sheet.PageSetup.Zoom = False  # 可調整列印比例
        sheet.PageSetup.FitToPagesWide = 1
        sheet.PageSetup.FitToPagesTall = False
    wb.ExportAsFixedFormat(0, pdf_path)
    wb.Close(False)
    excel.Quit()

# 單檔轉換
excel_to_pdf_win(r'C:\path\to\sample.xlsx', r'C:\path\to\output.pdf')

# 批次轉換資料夾內所有Excel檔
folder = r'C:\path\to\excel_folder'
for file in os.listdir(folder):
    if file.endswith('.xlsx') or file.endswith('.xls'):
        excel_path = os.path.join(folder, file)
        pdf_path = os.path.join(folder, file.rsplit('.', 1)[0] + '.pdf')
        excel_to_pdf_win(excel_path, pdf_path)

優缺點與注意事項

  • 優點:高度還原Excel原始格式、支援列印設定、支援多工作表
  • 缺點:僅限Windows,需安裝Excel,無法於Linux/Mac執行
  • 注意:執行時Excel需未被其他程式佔用,建議批次處理時監控Excel程序釋放

其他轉檔方案簡介

  • fpdf:純Python產生PDF,需自行設計表格格式,適合自訂報表
  • openpyxl + reportlab:讀取Excel資料後用reportlab繪製PDF,彈性高但需自行處理排版
  • 第三方雲端工具:如Monday.com、ClickUp等,部分支援自動化報表產生與PDF匯出,適合團隊協作與流程整合

常見FAQ

Q1:如何批次轉換多個Excel檔案?
A:可用os.listdir()遍歷資料夾,搭配上述程式碼自動批次轉檔。

Q2:轉檔後表格格式跑掉怎麼辦?
A:建議調整to_html()產生的HTML樣式,或於win32com方法中設定列印格式。

Q3:支援哪些Excel格式?
A:pdfkit支援xls/xlsx(需pandas/openpyxl),win32com同樣支援xls/xlsx。

Q4:如何設定PDF頁面尺寸與橫直向?
A:pdfkit可用options參數設定,win32com可用PageSetup調整。

Q5:有純Python解法嗎?
A:fpdf、openpyxl+reportlab皆為純Python,但格式需自行設計。

Q6:遇到wkhtmltopdf找不到或安裝失敗?
A:請確認安裝路徑,於pdfkit.configuration明確指定,或檢查環境變數。

Q7:轉檔後中文字顯示異常?
A:請於HTML指定UTF-8編碼,並確認wkhtmltopdf安裝了中文字型。

結語與進階應用

選擇合適的Excel轉PDF方法,能大幅提升數據報表自動化效率。pdfkit + wkhtmltopdf適合跨平台、格式彈性需求;win32com則適合Windows用戶追求高度格式還原。若需進一步整合自動化流程、團隊協作或報表排程,建議結合如Monday.com等專業專案管理工具,實現自動產出、即時分享與權限控管,讓數據流轉更順暢。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

✨ 讓專案管理變簡單,團隊更強大!

在專案推進的每一步,效率就是競爭力。monday.com 整合進度追蹤、團隊協作與資源分配,讓你隨時掌握全局、快速解決問題。
全球18萬家專業團隊已經採用,你還在等什麼?