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

Python实现多Excel文件多工作表批量转PDF的问题求助

解决多Excel文件多工作表批量转PDF的问题

你的代码仅能导出当前活动工作表,原因是调用了workbook.ActiveSheet.ExportAsFixedFormat,只处理了单个工作表。下面提供两种针对性解决方案:

方案1:将整个工作簿导出为单个PDF

直接调用工作簿的导出方法,一次性把所有工作表合并导出到同一个PDF文件:

from win32com import client
import os

directory = r"....directory path...."
# 仅创建一次Excel实例,避免重复开销和进程残留
excel = client.DispatchEx("Excel.Application")
excel.Interactive = False
excel.Visible = False

try:
    for file in os.listdir(directory):
        file_name, file_extension = os.path.splitext(file)
        input_file_path = os.path.join(directory, file)
        output_file_path = os.path.join(directory, file_name + '.pdf')
        if file_extension in ('.xlsx', '.xls'):
            workbook = excel.Workbooks.Open(input_file_path, None, True)
            # 导出整个工作簿而非单个活动表
            workbook.ExportAsFixedFormat(0, output_file_path)
            workbook.Close(False)  # 关闭工作簿,不保存修改
finally:
    excel.Quit()  # 确保Excel进程最终退出

方案2:每个工作表导出为独立PDF

如果需要为每个工作表单独生成PDF文件,遍历工作簿内的所有工作表逐个导出:

from win32com import client
import os

directory = r"....directory path...."
excel = client.DispatchEx("Excel.Application")
excel.Interactive = False
excel.Visible = False

try:
    for file in os.listdir(directory):
        file_name, file_extension = os.path.splitext(file)
        input_file_path = os.path.join(directory, file)
        if file_extension in ('.xlsx', '.xls'):
            workbook = excel.Workbooks.Open(input_file_path, None, True)
            # 遍历工作簿中的每个工作表
            for sheet in workbook.Sheets:
                # 生成包含工作表名称的输出文件路径
                sheet_output_path = os.path.join(directory, f"{file_name}_{sheet.Name}.pdf")
                sheet.ExportAsFixedFormat(0, sheet_output_path)
            workbook.Close(False)
finally:
    excel.Quit()

关键修改说明

  • 将Excel实例的创建移到循环外,减少资源消耗,避免多个后台Excel进程残留
  • 用workbook.ExportAsFixedFormat(方案1)或遍历workbook.Sheets逐个导出(方案2)替代原代码的ActiveSheet调用
  • 添加try-finally块确保Excel实例最终退出,防止进程后台驻留
  • 关闭工作簿时使用Close(False),避免弹出无意义的保存提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:07:32