为什么我得到一个枚举错误使用xlwings?



我正在使用xlwings,当我试图打开excel工作簿时,我得到一个奇怪的错误。它似乎来自xlwings源代码,所以我不知道该怎么做。有人知道怎么解决这个错误吗?我正在使用xlwings 0.27.6版本。

错误如下:

File "<string>", line 1, in <module>
File "u:userpythontest.py", line 22, in <module>
wb = xw.Book('ExcelSheetName.xlsm')
File "C:UsersuserAnaconda3libsite-packagesxlwingsmain.py", line 821, in __init__
for wb in app.books:
File "C:UsersuserAnaconda3libsite-packagesxlwingsmain.py", line 67, in __iter__
for impl in self.impl:
File "C:UsersuserAnaconda3libsite-packagesxlwings_xlwindows.py", line 755, in __iter__
for xl in self.xl:
File "C:UsersuserAnaconda3libsite-packagesxlwings_xlwindows.py", line 231, in __iter__
for v in self._inner:
File "C:UsersuserAnaconda3libsite-packageswin32comclientdynamic.py", line 257, in __getitem__
raise TypeError("This object does not support enumeration")
TypeError: This object does not support enumeration

似乎不支持在app.books上枚举…知道为什么这个代码失败了吗?提前感谢您的帮助

当同时打开几个Excel实例时,似乎会发生这种情况…

我要做的是从Excel文件中获取数据,在Python中进行一些计算,并在相同的Excel文件中返回结果。Python文件.py和Excel文件.xlsm位于同一目录中。我得到的错误发生在代码的"早期",如下所示:

import pandas as pd
import numpy as np
import xlwings as xw

wb = xw.Book('ExcelSheetName.xlsm')

我终于在xlwings文档中找到了另一种连接Python和Excel的方法,似乎可以解决我上面描述的问题。

假设您有一个名为"ExcelSheetName"的文件。使用名为"Sheet1"的工作表。您可以使用以下代码:

import xlwings as xw
def my_macro():
wb = xw.Book.caller()
return wb
if __name__ == '__main__':
xw.Book(r 'U:pathExcelSheetName.xlsm').set_mock_caller()
wb = my_macro()
else :
wb = my_macro()
Sheet1 = wb.sheets['Sheet1']
使用这段代码,我不再得到枚举错误!此外,我可以很容易地通过RunPython从Python或Excel中运行调试代码,而无需更改源代码。

最新更新