使用Python高效實現(xiàn)Excel轉PDF
在日常辦公和數(shù)據(jù)處理過程中,Excel 是我們最常用的工具,而 PDF 則是方便共享、打印和歸檔的格式。很多時候,我們需要把 Excel 文件轉成 PDF,比如生成財務報表、整理項目數(shù)據(jù),或者對外提供資料。手動操作既耗時又容易出錯,尤其是面對大量文件時,這時候用 Python 來處理就方便多了。
本文將分享如何使用 Python 把 Excel 轉換為 PDF,內(nèi)容涵蓋基礎轉換、批量轉換與多種轉換設置。
一、為什么要把 Excel 轉成 PDF
Excel 很靈活,支持公式、圖表、條件格式、數(shù)據(jù)透 視表等功能,非常適合數(shù)據(jù)錄入和分析。但在實際工作中,我們常常會遇到這些需求:
1.固定格式、防止篡改
PDF 文件內(nèi)容固定,不容易被修改,適合對外發(fā)布的報告或合同附件。
2.打印與歸檔方便
PDF 可以保證打印效果和版面布局一致,方便紙質歸檔或長期存檔。
3.跨平臺共享
Excel 文件在不同版本或操作系統(tǒng)上可能顯示不一致,而 PDF 能保證格式穩(wěn)定。
掌握了Python Excel 轉 PDF 的方法,不僅能保證高質量輸出,還能實現(xiàn)批量處理、分頁控制等功能。
二、Python Excel 轉 PDF 庫安裝
Python 里有很多 Excel 操作庫,但大多數(shù)不支持直接轉換 PDF。這里我們用 Spire.XLS for Python,它既能讀寫 Excel,也能轉換 PDF,而且操作簡單。
安裝命令:
pip install spire.xls
特點:
- 支持
.xls和.xlsx,直接讀取和轉換 - 保留 Excel 的原始樣式,包括字體、顏色、邊框和圖表
- 不依賴 Microsoft Office,適合服務器批量處理
三、Excel 轉 PDF 基礎轉換示例
最基本的 Excel 轉 PDF 操作非常簡單,只需要三個步驟:創(chuàng)建工作簿、加載文件、保存為 PDF。
from spire.xls import *
# 創(chuàng)建 Workbook 對象
workbook = Workbook()
# 加載 Excel 文件
workbook.LoadFromFile("example.xlsx")
# 保存為 PDF
workbook.SaveToFile("example.pdf", FileFormat.PDF)
說明:
Workbook:表示 Excel 工作簿LoadFromFile:加載.xlsx或.xls文件SaveToFile:保存 PDF,使用FileFormat.PDF指定PDF輸出格式
四、批量轉換 Excel 文件為 PDF
在實際辦公中,經(jīng)常需要將大量 Excel 文件轉換為 PDF,例如月度報表或項目數(shù)據(jù)。使用 Python 可以輕松實現(xiàn)批量處理。
import os
from spire.xls import *
inputFolder = "excel_files" # Excel 文件夾
outputFolder = "pdf_files" # 輸出 PDF 文件夾
# 如果輸出文件夾不存在,則創(chuàng)建
os.makedirs(outputFolder, exist_ok=True)
# 遍歷 Excel 文件夾
for filename in os.listdir(inputFolder):
if filename.endswith(".xlsx") or filename.endswith(".xls"):
excelPath = os.path.join(inputFolder, filename)
name, _ = os.path.splitext(filename)
pdfPath = os.path.join(outputFolder, name + ".pdf")
workbook = Workbook()
workbook.LoadFromFile(excelPath)
workbook.SaveToFile(pdfPath, FileFormat.PDF)
print("所有 Excel 文件已成功轉換為 PDF!")
說明:
os.makedirs確保輸出文件夾存在,否則自動創(chuàng)建。os.path.splitext安全分離文件名和擴展名,避免替換錯誤。
五、其他轉換設置
1. 控制頁面布局和打印效果
在實際辦公中,報表通常對打印效果有要求,例如紙張大小、方向、打印區(qū)域、頁邊距等。Spire.XLS 提供了豐富的頁面設置選項。
from spire.xls import *
workbook = Workbook()
workbook.LoadFromFile("report.xlsx")
sheet = workbook.Worksheets[0]
# 打印方向:橫向
sheet.PageSetup.Orientation = PageOrientationType.Landscape
# 紙張大?。篈4
sheet.PageSetup.PaperSize = PaperSizeType.PaperA4
# 打印區(qū)域
sheet.PageSetup.PrintArea = "A1:H30"
# 頁面邊距
sheet.PageSetup.Margins.Top = 20
sheet.PageSetup.Margins.Bottom = 20
sheet.PageSetup.Margins.Left = 15
sheet.PageSetup.Margins.Right = 15
workbook.SaveToFile("ToPdf.pdf", FileFormat.PDF)
這樣設置可以保證打印不被截斷,報表布局更美觀。
2. PDF 加密與權限
有時候,需要為生成的 PDF 添加密碼保護或權限限制,防止被隨意修改或打印。Spire.XLS 提供了 PDF 加密功能。
from spire.xls import *
workbook = Workbook()
workbook.LoadFromFile("Example.xlsx")
pdfSecurity = workbook.ConverterSetting.PdfSecurity
pdfSecurity.Encrypt("userPassword", "ownerPassword", PdfPermissionsFlags.Print, PdfEncryptionKeySize.Key128Bit)
workbook.SaveToFile("SecurePdf.pdf", FileFormat.PDF)
說明:
userPassword:打開 PDF 所需密碼ownerPassword:修改權限所需密碼PdfPermissionsFlags:控制打印、復制等操作權限
3. 生成 PDF/A 文件
PDF/A 是用于長期存檔的標準格式,保證文檔在未來可被可靠閱讀。Spire.XLS 支持將 Excel 文件直接輸出為 PDF/A。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
workbook.ConverterSetting.PdfConformanceLevel = PdfConformanceLevel.Pdf_A1A
workbook.SaveToFile("ExcelToPDFA.pdf", FileFormat.PDF)
workbook.Dispose()
PDF/A 文件適合長期歸檔,不會因為字體或格式問題顯示異常。
六、常見問題與解決方法
- 字體亂碼:確保系統(tǒng)中安裝了 Excel 使用的字體
- 分頁不合理:通過
PrintArea或手動分頁符調(diào)整 - 公式未計算:使用
workbook.CalculateAllValue()預先計算 - 大文件處理慢:可按工作表拆分轉換,或優(yōu)化內(nèi)存管理
七、總結
在日常工作中,處理 Excel 轉 PDF 的需求其實很常見。從快速生成報表,到批量處理項目數(shù)據(jù),再到需要加密或長期存檔的文件,這些操作都可以通過 Python 簡單完成。
通過本文的示例,你可以看到整個流程并不復雜:加載工作簿、設置頁面、保存為 PDF,就能完成大部分需求。更重要的是,開發(fā)者可以根據(jù)實際情況靈活調(diào)整:簡單任務直接保存,正式報表控制布局,加密或輸出 PDF/A 以保證安全和可讀性。掌握這些方法后,就可以輕松完成 Excel 到 PDF 的轉換。
到此這篇關于使用Python高效實現(xiàn)Excel轉PDF的文章就介紹到這了,更多相關Python Excel轉PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python數(shù)據(jù)分析Numpy庫的常用操作
numpy 是 Python 的一個科學計算的庫,提供了矩陣運算的功能,其一般與 Scipy、matplotlib 一起使用,這篇文章總結下python數(shù)據(jù)分析Numpy庫的常用操作,感興趣的朋友一起看看吧2022-01-01
使用Python創(chuàng)建一個視頻管理器并實現(xiàn)視頻截圖功能
在這篇博客中,我將向大家展示如何使用 wxPython 創(chuàng)建一個簡單的圖形用戶界面 (GUI) 應用程序,該應用程序可以管理視頻文件列表、播放視頻,并生成視頻截圖,我們將逐步實現(xiàn)這些功能,并確保代碼易于理解和擴展,感興趣的小伙伴跟著小編一起來看看吧2024-08-08
PyTorch使用tensorboard的SummaryWriter報錯問題解決方案
PyTorch使用tensorboard可以顯示網(wǎng)絡運行情況,但偶爾使用SummaryWriter時遇到Segmentation fault錯誤,這篇文章主要介紹了PyTorch使用tensorboard的SummaryWriter報錯問題解決方案,需要的朋友可以參考下2024-06-06
基于python與streamlit構建簡單的內(nèi)網(wǎng)智能聊天室應用
這篇文章主要為大家詳細介紹了如何基于python與streamlit構建簡單的內(nèi)網(wǎng)智能聊天室應用,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2025-11-11
初學python數(shù)學建模之數(shù)據(jù)導入(小白篇)
本篇文章是小白篇初學python的同學可以來共同學習了,本篇文章主要講解了python數(shù)學建模過程中的第一步數(shù)據(jù)導入,數(shù)據(jù)導入是所有數(shù)模編程的第一步,比你想象的更重要2021-08-08

