如何自动缩小图表范围?

时间:2019-04-03 13:32:09

标签: python excel xlwings

首先,抱歉我的英语不好,因为它不是第一语言。 我最近开始学习python,并且尝试开发一个“简单”程序,但是遇到了问题。

我正在使用xlwings修改和与Excel交互。我想实现(或者想知道是否可能)是:

我擅长研究数据并绘制图表。然而,该图有时例如具有20个X轴值,而在其他情况下,假设10个X轴值,因此,留下10个#NA空白空间。基于此,我想通过更改图形的形状范围来调整图形以仅显示10个值。

函数get_prod_hours()会在X轴上显示我想要多少个值:

def get_prod_hours():
    """From the input gets the production hours to adapt the graphs"""
    dt = wb.sheets['Calculatrice']
    return dt.range('E24').value

基于从函数获得的值,我必须修改图形上的值范围(通过减小它)。

例如从头创建图形的解决方案并不可行,因为我只想修改图形的范围,因为Excel文件是我公司的“标准”文件。

我希望有这样的东西:

Excel中的列A的值为:1, 2, 3, 4, 5,并从get_prod_hours()获得5的值,因此我的图形只有5个点,而没有6个点,例如#NA。 >

非常感谢,很抱歉。

1 个答案:

答案 0 :(得分:0)

xlwings API并没有提供很多图表选项(请参见https://docs.xlwings.org/en/stable/api.html?highlight=charts#xlwings.main.Charts)。

尝试在wb.sheets[0].charts中查找图表。

然后可以使用

修改范围
range = xw.Range((1,1), (get_prod_hours(),1))
set_source_data(wb.sheets[0].range(range))

但是通过查看API并知道Excel图表有多少个选项,API感觉太薄了。

如果这不起作用,则可以选择添加一个VBA宏来修改图表并调用它。参见How do I call an Excel macro from Python using xlwings?