Python实现Excel转PDF的完整代码指南

Python实现Excel转PDF的完整代码指南

在日常办公中,将Excel表格转换为PDF格式是一种常见需求,它既能保持表格格式固定,又便于分享和存档。通过编写代码自动化这一过程,可以大幅提升工作效率。本文将详细介绍如何使用Python实现Excel到PDF的转换。

方法一:使用pandas和reportlab

pandas是Python中强大的数据处理库,结合reportlab可以生成PDF文件。以下是基本步骤:


import pandas as pd
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
from reportlab.lib.styles import getSampleStyleSheet

def excel_to_pdf(excel_file, pdf_file):
    # 读取Excel文件
    df = pd.read_excel(excel_file)
    
    # 创建PDF文档
    doc = SimpleDocTemplate(pdf_file, pagesize=letter)
    elements = []
    
    # 将DataFrame转换为列表
    data = [df.columns.tolist()] + df.values.tolist()
    
    # 创建表格
    table = Table(data)
    table.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), 'grey'),
        ('GRID', (0,0), (-1,-1), 1, 'black')
    ]))
    elements.append(table)
    
    # 生成PDF
    doc.build(elements)

方法二:通过COM自动化调用Excel应用

在Windows系统上,可以利用win32com.client库直接控制Excel应用程序进行转换,这种方法能更好地保留原始格式:


import win32com.client as win32

def excel_to_pdf_com(excel_file, pdf_file):
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    excel.Visible = False
    
    wb = excel.Workbooks.Open(excel_file)
    wb.ExportAsFixedFormat(0, pdf_file)  # 0表示PDF格式
    
    wb.Close()
    excel.Quit()

注意事项

  • 确保已安装所需库:pandas, openpyxl, reportlab, pywin32
  • 方法二仅适用于Windows系统且需要安装Microsoft Excel
  • 对于复杂的Excel格式,建议使用COM方法以获得更好的兼容性
  • 大文件转换时注意内存使用情况

扩展应用

这些基础方法可以进一步扩展,例如:

  • 添加命令行参数支持
  • 实现批量文件转换
  • 添加自定义页眉页脚
  • 支持密码保护的PDF生成

通过以上代码示例,开发者可以根据具体需求选择合适的方法,快速实现Excel到PDF的自动转换功能。在实际应用中,还可以根据具体业务场景进行优化和定制。