首页 > 解决方案 > xlwings 中的图表对象

问题描述

代码片段来自xlwings 这里的官方文档,它是我的问题的设置。

import xlwings as xw
sht = xw.Book().sheets[0]
sht.range('A1').value = [['Foo1', 'Foo2'], [1, 2]]
chart = sht.charts.add()
chart.set_source_data(sht.range('A1').expand())
chart.chart_type = 'line'
chart.name

运行print(chart.api)输出下面的元组。

(<xlwings._xlwindows.COMRetryObjectWrapper at 0x1fcd60c9a90>, <xlwings._xlwindows.COMRetryObjectWrapper at 0x1fcd60c9f28>)

如果我想使用api属性来做一些基本的图表操作,比如删除图例并添加标题,它只有在我这样做时才有效chart.api[1]。例如下面的代码工作正常。它删除图表图例并添加标题。

chart.api[1].HasLegend = 0
chart.api[1].SetElement(2)
chart.api[1].ChartTitle.Text = 'A title'

但是,我所做的任何事情都会chart.api[0]产生错误(例如print(chart.api[0].HasLegend)产生错误)。我无法理解这是什么类型的对象或它有什么用处。我在官方文档中找不到任何关于此的内容。

最后我的问题是:上面索引 0 处的对象是什么?请帮我弄清楚它是什么。

标签: pythonpywin32xlwings

解决方案


还有一篇文章解决了您关于索引 0 处对象的问题。

在 Xlwings 中设置图表名称

表达式chart.api 返回一个带有两个COM 包装器的元组。我不太确定为什么有两个 COM 包装器,但您似乎需要第二个来访问图表。因此在这里使用chart.api[1]。


推荐阅读