Python 处理excel文件时遇到报错:AttributeError: module 'win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x9' has no attribute 'CLSIDToClassMap'

百度了一下,都是直接删除一个临时文件夹,重新运行后便正常了。

https://blog.csdn.net/wangzhiqin365/article/details/84643452

1. 我在用python处理一个excdl文件时,遇到报错如下:

Traceback (most recent call last):
File "C:/pythonProject/流量短信详单时间格式_正式脚本.py", line 320, in <module>
main()
File "C:/pythonProject/流量短信详单时间格式_正式脚本.py", line 308, in main
cuc_data_process()
File "C:/pythonProject/流量短信详单时间格式_正式脚本.py", line 170, in cuc_data_process
fileName = xls2xlsx(fileName)
File "C:/pythonProject/流量短信详单时间格式_正式脚本.py", line 16, in xls2xlsx
excel = win32.gencache.EnsureDispatch('Excel.Application')
File "C:Python_3.6.8libsite-packageswin32comclientgencache.py", line 531, in EnsureDispatch
mod = EnsureModule(tla[0], tla[1], tla[3], tla[4], bForDemand=bForDemand)
File "C:Python_3.6.8libsite-packageswin32comclientgencache.py", line 388, in EnsureModule
module = GetModuleForTypelib(typelibCLSID, lcid, major, minor)
File "C:Python_3.6.8libsite-packageswin32comclientgencache.py", line 263, in GetModuleForTypelib
AddModuleToCache(typelibCLSID, lcid, major, minor)
File "C:Python_3.6.8libsite-packageswin32comclientgencache.py", line 549, in AddModuleToCache
dict = mod.CLSIDToClassMap
AttributeError: module 'win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x9' has no attribute 'CLSIDToClassMap'

Process finished with exit code 1

2.解决方法:

运行下面 4行代码,找到报错的临时文件夹所在路径,将其删除

$ python
Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from win32com.client.gencache import EnsureDispatch
>>> import sys
>>> xl = EnsureDispatch("Word.Application")
>>> print(sys.modules[xl.__module__].__file__)
C:UsershpAppDataLocalTempgen_py3.60020905-0000-0000-C000-000000000046x0x1x9\_Application.p

>>>

3. 再次运行python脚本处理excel,可以执行完毕,会发现刚才删除的临时文件夹又出现了,不用管它。

原文地址:https://www.cnblogs.com/tonyxiao/p/14736747.html