【问题标题】:Python Xlwings exceution IssuePython Xlwings 执行问题
【发布时间】:2021-05-03 00:30:13
【问题描述】:

我正在使用 xlwings 0.23.1 来处理 MS excel 365。

但是当我执行以下代码时:

import xlwings as xw

wb = xw.books.active
ws = wb.sheets('MySheet')
tbl = ws.api.ListObjects('MyTable') # or .ListObjects(1)
rng = ws.range(tbl.range.address) # get range from table address

df = rng.options(pd.DataFrame, header=True).value # load range to dataframe

上面的代码卡在

 rng = ws.range(tbl.range.address) # get range from table address

并且不执行。

代码取自: Read Excel Table headers with xlwings

我正在使用 Spyder IDE

【问题讨论】:

标签: python excel xlwings


【解决方案1】:

使用我的本地安装 xlwings 0.16.0,您的代码可以工作;但正如您在升级到 0.23.0 后描述的那样失败。好像在某个版本之后,xlwings 严格区分了xlwings 对象和关联的win32com 对象(一般由.api 转换而来)。

一个修复是改变行从

rng = ws.range(tbl.range.address) # get range from table address

to(大写 rangeaddress

rng = ws.range(tbl.Range.Address) # get range from table address

对于win32com 对象,其api 通常将首字母大写,而xlwings 则全部小写。第三行代码ws.api返回一个win32com对象,然后是tbl,所以.range.address会受到相应的影响。

【讨论】:

    猜你喜欢
    • 2016-05-04
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多