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

使用win32com转换Excel为PDF时出现WorkSheets相关AttributeError如何解决

报错原因

  • 核心原因是属性名大小写拼写不符合Excel COM接口规范:工作表集合的正确属性名为Worksheets,你代码中写的WorkSheets第二个字母S大写,属于拼写错误。
  • 次要可能原因:win32com的本地互操作缓存损坏,Office版本更新、pywin32库升级都可能触发该问题,即使拼写正确也会提示找不到属性。

修复方案

1. 优先修正属性名拼写

直接把报错行的wb.WorkSheets(ws_index_list).Select()修改为wb.Worksheets(ws_index_list).Select(),90%的情况可以直接解决问题。

2. 修正拼写后仍报错的处理方案

清理win32com的旧缓存,重新生成接口映射即可,同时建议补充路径解析、进程退出逻辑,避免后续出现文件找不到、Excel后台进程残留的问题,完整参考代码如下:

import win32com.client
import os

# 清理旧的win32com缓存
win32com.client.gencache.EnsureDispatch("Excel.Application").Quit()
win32com.client.gencache.Rebuild()

o = win32com.client.gencache.EnsureDispatch('Excel.Application')
o.Visible = False

# 解析~符号对应的用户目录,避免路径识别失败
wb_path = os.path.expanduser(r'~\Sample Invoice1.xlsx')
wb = o.Workbooks.Open(wb_path)
 
ws_index_list = [1]
path_to_pdf = os.path.expanduser(r'~/Sample Invoice1.pdf')
wb.Worksheets(ws_index_list).Select()
wb.ActiveSheet.ExportAsFixedFormat(0, path_to_pdf)

# 操作完成后关闭文件、退出Excel进程,避免后台残留占用文件
wb.Close(SaveChanges=False)
o.Quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:06:02