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


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

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


一、为什么要把 Excel 转成 PDF

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

  • 固定格式、防止篡改
    PDF 文件内容固定,不容易被修改,适合对外发布的报告或合同附件。
  • 打印与归档方便
    PDF 可以保证打印效果和版面布局一致,方便纸质归档或长期存档。
  • 跨平台共享
    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 的转换。

    最后编辑于
    ©著作权归作者所有,转载或内容合作请联系作者
    【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
    平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

    友情链接更多精彩内容