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

如何用Python实现Excel批量转PDF时仅导出前两个工作表

Excel批量转PDF仅导出前两个工作表的实现代码

以下是调整后可满足需求的完整代码:

import glob
from win32com.client import DispatchEx

path = '/folder_path'
filenames = glob.glob(path + "/*xlsx")

for i in filenames:
    pdf_path = i.replace('xlsx', 'pdf')
    xlApp = DispatchEx("Excel.Application")
    # 配置Excel后台运行,不弹出窗口和提示框
    xlApp.Visible = False
    xlApp.DisplayAlerts = False
    books = None
    try:
        books = xlApp.Workbooks.Open(i)
        # 遍历所有工作表,隐藏前两个之外的其余工作表
        for ws in books.Worksheets:
            if ws.Index > 2:
                ws.Visible = 0
        # 导出PDF仅包含可见工作表
        books.ExportAsFixedFormat(0, pdf_path)
    finally:
        if books:
            # 关闭工作簿不保存修改,不会改动原文件的工作表可见性
            books.Close(SaveChanges=False)
        xlApp.Quit()

关键逻辑说明

  • Excel 工作表使用1基索引,第1、2个工作表对应索引为1、2,其余工作表从索引3开始遍历
  • 将索引大于2的工作表Visible属性设为0即可隐藏,导出PDF时默认仅导出可见工作表
  • 新增try...finally块确保无论处理是否出错,都能正常退出Excel进程,避免后台残留无用进程

可选简化实现(无需隐藏工作表)

也可以直接选中前两个工作表后导出,不需要修改工作表可见性,代码更简洁,效果完全一致:
只需要把遍历隐藏工作表的代码替换为以下语句即可:

# 直接选中前两个工作表
books.Worksheets([1,2]).Select()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 07:45:03