一个简单的问题
import win32com.client as win32
Excel = win32.gencache.EnsureDispatch('Excel.Application')
上面的代码上周有效,但现在它产生了错误。
AttributeError: 'module' object has no attribute 'CLSIDToPackageMap'
答案 0 :(得分:5)
删除C:\ Temp \ gen_py后,上面的代码再次起作用。希望它能省事!
答案 1 :(得分:0)
此属性错误的主要原因是因为您的COM服务器已从后期绑定(动态)更改为早期绑定(静态)。
有两种方法可以解决此问题:
使用动态模块来强制您的代码以面向后期的方式工作。使用示例:
"win32com.client.Dispatch()" instead of "win32.gencache.EnsureDispatch('Excel.Application')"
使用面向驼峰的敏感关键字作为面向早期绑定的方式。使用示例:
"excel.Visible()" instead of "excel.VISIBLE()" or "excel.visible()"
我猜想,该代码可在删除gen_py文件夹后的第一次运行中使用,但由于第二次运行会抛出错误,因为win32.gencache.EnsureDispatch是早期的绑定Dispatch,将再次创建gen_py文件夹。