如何用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
相关产品推荐
相关产品推荐

