Win32com python:无法访问ex上的图表

2024-06-28 20:02:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要用python修改excel中图表的公式, 为了了解如何操作,我录制了一个宏,这是我得到的:

ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.Axes(xlCategory).Select
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.SeriesCollection(1).Values = "='Données'!$ET$68:$IJ$68"
ActiveChart.SeriesCollection(1).XValues = "='Données'!$ET$1:$IJ$1"

因此,我的图表显然被称为graphique1,根据excel文档,ChartObjects在工作表objet上被调用。别紧张,对吧?在

然而,似乎什么都不管用:

^{pr2}$

有什么想法吗? 谢谢。在

注:我现在对excel没有太多的了解,我有10张工作表,我想我的chartObject在工作表上,如果它正在绘图的话

编辑

奇怪的是,每一张表的ChartObjects计数都返回0,怎么可能呢?我能亲眼看到

>>> for i in range(1,10):
    ws = workbook.Sheets(i)
    co = ws.ChartObjects()
    count = co.Count
    print count


0
0
0
0
0
0
0
0
0

Tags: wsescount图表exceletactivateco
1条回答
网友
1楼 · 发布于 2024-06-28 20:02:58

但是,如果.ChartObjects()不起作用,可以尝试.Shapes

import win32com.client as win32com

xl = win32com.DispatchEx ("Excel.Application")
xl.Visible = True

wb = xl.Workbooks.Open(r"C:\Book2.xls")

print wb.Worksheets(1).Name
# Selecting ChartObjects on a worksheet
wb.Worksheets(1).ChartObjects(1).Activate()
wb.Worksheets(1).ChartObjects(1).Select()

# Selecting Shapes on a worksheet (which charts are shapes)
#wb.Worksheets(1).Shapes(1).Activate() # Will not work
wb.Worksheets(1).Shapes(1).Select()

# This should loop through all of the shapes
for shape in wb.Worksheets(1).Shapes:
    print shape.Name

# This should loop though all Chart objects 
for chartz in wb.Worksheets(1).ChartObjects():
    print chartz.Name   # Print the name of the chart

如果这些都不起作用,那么显然你的excel文件无法识别任何形状或图表。尝试在该工作簿中创建一个新图表,然后重新运行这些命令以查看它是否显示出来,如果没有,则说明您的excel文件可能有问题。在

相关问题 更多 >