You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何借助win32com.client库实现Excel转PDF及批量生成?

Excel转PDF(含批量生成方案):基于win32com.client实现

核心实现思路

借助win32com.client调用Windows系统中Excel的原生接口,利用Excel自带的导出PDF功能完成转换。这种方法稳定性高,适合企业批量处理场景,能大幅节省人工操作时间。

单工作表转PDF代码示例

import win32com.client as client
import os

def xlpdf(self):
    # 启动后台Excel进程
    app = client.DispatchEx('Excel.Application')
    app.Interactive = False  # 禁用交互操作
    app.Visible = False      # 隐藏Excel窗口

    # self.style_sheet 为此前用openpyxl.loadworkbook加载的Excel工作簿对应的文件路径
    wb = app.Workbooks.open(self.style_sheet)

    # 通过下拉框选择目标工作表并激活
    target_sheet = self.style_options.currentText()
    wb.Worksheets(target_sheet).Activate()

    # 定义PDF输出路径
    output = r'指定输出目录\文件名.pdf'

    # 导出为PDF:参数0代表PDF格式,参数1代表XPS格式
    wb.ActiveSheet.ExportAsFixedFormat(0, output)
    
    # 关闭工作簿并终止Excel进程
    wb.Close()
    os.system('taskkill /f /im excel.exe')

批量生成PDF的扩展方案

基于上述基础代码,可快速扩展为批量处理逻辑:

  • 批量处理多个Excel文件:遍历指定文件夹下的所有Excel文件,逐个执行转换流程
  • 批量导出单个Excel的多工作表:遍历工作簿内所有工作表,为每个表生成独立PDF

示例代码(批量导出单个Excel的所有工作表):

import win32com.client as client
import os

def batch_xl_to_pdf(excel_path, output_dir):
    app = client.DispatchEx('Excel.Application')
    app.Interactive = False
    app.Visible = False

    wb = app.Workbooks.open(excel_path)
    
    # 确保输出目录存在
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # 遍历所有工作表并导出
    for sheet in wb.Worksheets:
        sheet.Activate()
        pdf_path = os.path.join(output_dir, f"{sheet.Name}.pdf")
        wb.ActiveSheet.ExportAsFixedFormat(0, pdf_path)
    
    wb.Close()
    os.system('taskkill /f /im excel.exe')

# 调用示例
batch_xl_to_pdf(r'待转换Excel文件路径.xlsx', r'PDF输出文件夹路径')

关于openpyxl的尝试

openpyxl是常用的Excel读写库,但它本身不具备直接导出PDF的能力,仅能完成Excel文件的读写操作。基础使用示例:

import openpyxl

# 加载Excel工作簿
wb = openpyxl.load_workbook('Excel文件路径.xlsx')

若要通过openpyxl实现转PDF,需结合第三方工具(如LibreOffice命令行工具),复杂度远高于直接调用Excel原生接口。

内容的提问来源于stack exchange,提问作者Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 15:23:17