0
点赞
收藏
分享

微信扫一扫

Python 高效实现 Excel 转 PDF: 不依赖Office

在日常办公和数据处理过程中,Excel 是我们最常用的工具,而 PDF 则是方便共享、打印和归档的格式。很多时候,我们需要把 Excel 文件转成 PDF,比如生成财务报表、整理项目数据,或者对外提供资料。手动操作既耗时又容易出错,尤其是面对大量文件时,这时候用 Python 来处理就方便多了。

本文将分享如何使用 Python 把 Excel 转换为 PDF,内容涵盖基础转换、批量转换与多种转换设置。

一、为什么要把 Excel 转成 PDF

Excel 很灵活,支持公式、图表、条件格式、数据透视表等功能,非常适合数据录入和分析。但在实际工作中,我们常常会遇到这些需求:

  1. 固定格式、防止篡改
    PDF 文件内容固定,不容易被修改,适合对外发布的报告或合同附件。
  2. 打印与归档方便
    PDF 可以保证打印效果和版面布局一致,方便纸质归档或长期存档。
  3. 跨平台共享
    Excel 文件在不同版本或操作系统上可能显示不一致,而 PDF 能保证格式稳定。

掌握了Python Excel 转 PDF 的方法,不仅能保证高质量输出,还能实现批量处理、分页控制等功能。

二、Python Excel 转 PDF 库安装

Python 里有很多 Excel 操作库,但大多数不支持直接转换 PDF。这里我们用 Spire.XLS for Python,它既能读写 Excel,也能转换 PDF,而且操作简单。

安装命令:

pip install spire.xls

特点:

  • 支持 .xls.xlsx,直接读取和转换
  • 保留 Excel 的原始样式,包括字体、颜色、边框和图表
  • 不依赖 Microsoft Office,适合服务器批量处理

三、Excel 转 PDF 基础转换示例

最基本的 Excel 转 PDF 操作非常简单,只需要三个步骤:创建工作簿、加载文件、保存为 PDF。

from spire.xls import *

# 创建 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

在实际办公中,经常需要将大量 Excel 文件转换为 PDF,例如月度报表或项目数据。使用 Python 可以轻松实现批量处理。

import os
from spire.xls import *

inputFolder = "excel_files"   # Excel 文件夹
outputFolder = "pdf_files"    # 输出 PDF 文件夹

# 如果输出文件夹不存在,则创建
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 确保输出文件夹存在,否则自动创建。
  • os.path.splitext 安全分离文件名和扩展名,避免替换错误。

五、其他转换设置

1. 控制页面布局和打印效果

在实际办公中,报表通常对打印效果有要求,例如纸张大小、方向、打印区域、页边距等。Spire.XLS 提供了丰富的页面设置选项。

from spire.xls import *

workbook = Workbook()
workbook.LoadFromFile("report.xlsx")
sheet = workbook.Worksheets[0]

# 打印方向:横向
sheet.PageSetup.Orientation = PageOrientationType.Landscape
# 纸张大小:A4
sheet.PageSetup.PaperSize = PaperSizeType.PaperA4
# 打印区域
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 文件适合长期归档,不会因为字体或格式问题显示异常。

六、常见问题与解决方法

  • 字体乱码:确保系统中安装了 Excel 使用的字体
  • 分页不合理:通过 PrintArea 或手动分页符调整
  • 公式未计算:使用 workbook.CalculateAllValue() 预先计算
  • 大文件处理慢:可按工作表拆分转换,或优化内存管理

七、总结

在日常工作中,处理 Excel 转 PDF 的需求其实很常见。从快速生成报表,到批量处理项目数据,再到需要加密或长期存档的文件,这些操作都可以通过 Python 简单完成。

通过本文的示例,你可以看到整个流程并不复杂:加载工作簿、设置页面、保存为 PDF,就能完成大部分需求。更重要的是,开发者可以根据实际情况灵活调整:简单任务直接保存,正式报表控制布局,加密或输出 PDF/A 以保证安全和可读性。掌握这些方法后,就可以轻松完成 Excel 到 PDF 的转换。


举报

相关推荐

0 条评论