在xlwings中控制图表类型

2 投票
3 回答
2788 浏览
提问于 2025-04-18 01:18

怎样在用xlwings从Python制作Excel图表时控制图表的类型呢?

我在当前的文档里没有看到相关的信息:http://docs.xlwings.org/chart.html

就像在xlwings的快速入门示例中提到的:

from xlwings import Workbook, Range, Chart
wb = Workbook()  # Creates a connection with a new workbook
Range('A1').value = ['Foo 1', 'Foo 2', 'Foo 3', 'Foo 4']
Range('A2').value = [10, 20, 30, 40]
chart = Chart().add()
chart.set_source_data(Range('A1').table)

我还没有找到控制添加到Excel工作簿中图表类型的方法……

3 个回答

-2

或者你可以自己写代码,然后提交一个补丁。如果你能通过Excel的界面创建图表,那你就可以利用VBA的宏录制功能,找出需要用到的对象和操作。

把这些特定的VBA代码转成通用的Python代码可能需要一些功夫,但你可以使用Excel VB编辑器的对象浏览器、智能提示和帮助文件来帮助你。Python的编码风格相对简单,只要你学会使用装饰器来让代码更易管理。

这可能会很有趣。如果你觉得不适合自己,那也许对其他看到这个问题的人来说会很有意思。

0

为什么不直接使用win32com呢?用这个你可以获得完整的Excel对象模型,这样你就能做任何你在VBA中能做的事情。

我找到了一段小代码示例,展示如何用win32com添加图表,链接在这里: http://techlinksandstuff.blogspot.co.uk/2012/11/using-python-to-plot-in-excel.html

对象模型的文档可以在MSDN上找到,或者如果你对VBA熟悉的话,它和你在VBA中做的事情是完全一样的。 http://msdn.microsoft.com/en-us/library/wss56bz7.aspx

2

这是图表功能中一个基本的功能,目前还没有实现,文档中也提到了这一点。这个问题在这里有记录,希望在下一个版本中能解决。

不过,事情并没有那么糟糕:你可以通过访问底层的COM对象来控制图表,像这样(接着你上面的代码):

chart.xl_chart.Chart.ChartType = -4102

你需要从MSDN参考中查找你想要的特定图表类型的值。所以虽然看起来不太好,但在xlwings实现之前,这个方法应该是可行的。

撰写回答