使用pywin32進行Excel操作,has no attribute 'CLSIDToClassMap'

問題描述:使用pywin32進行Excel操作,報如下錯誤: 

File "C:\Users\syd\AppData\Local\Programs\Python\Python35\lib\site-packages\win32com\client\gencache.py", line 552, in AddModuleToCache
dict = mod.CLSIDToClassMap
AttributeError: module 'win32com.gen_py.00020905-0000-0000-C000-000000000046x0x8x7' has no attribute 'CLSIDToClassMap'

問題解決: 

參考:https://mlln.cn/2018/04/23/win32com-gen-py%E9%94%99%E8%AF%AFhas-no-attribute-CLSIDToClassMap/index.html

發生這個錯誤的原因並不是很清楚, 大概是升級了一下系統, 但是我並不清楚內部原因.
解決的方法就是, 因爲這個緩存的文件有問題, 所以就應該刪掉緩存. 所以我先找到這個緩存文件:

from win32com.client.gencache import EnsureDispatch
import sys
xl = EnsureDispatch("Word.Application")
print(sys.modules[xl.__module__].__file__)

運行這段代碼, 就會找到它的位置. 然後刪除gen_py文件夾下的所有包含這一堆數字的文件夾0020905-0000-0000-C000-000000000046x0.

然後你的程序又能順利運行了.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章