通过python使用win32com从excel文件中提取图表对象并将其转换为图像

2024-09-28 17:16:41 发布

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

我正在尝试为chart objects提取一个.xlsxexcel文件,并将它们导出为图像。我发现的唯一类似的stackoverflow问题是this one,它试图做同样的事情。然而,这个脚本似乎不起作用(即使我更正了语法/方法)。 我愿意在Python 2.7.93.4.0.中运行此程序,因为我的计算机上都运行这两个版本。 下面是我正在使用的代码:

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application') 
wb = excel.Workbooks.Open(r'C:\Users\Emilyn\Desktop\chartTest.xlsx') 
excel.Visible = True
wb.Sheets("Sheet1").Select() 
wbSheetOne = wb.Sheets(1) 
wb.DisplayAlerts = False 
i = 0
    for chart in wbSheetOne.ChartObjects():
        print(chart.Name)
        chart.CopyPicture()
        excel.ActiveWorkbook.Sheets.Add(After =excel.ActiveWorkbook.Sheets(3)).Name="temp_sheet" + str(i)
        temp_sheet = wb.ActiveSheet
        cht = wb.ActiveSheet.ChartObjects().Add(0,0,800,600)
        cht.Chart.Export("chart" + str(i) + ".png")
        i = i+1
excel.ActiveWorkbook.close
wb.DisplayAlerts = True

这将打开我的excel文件,在我的documents文件夹中生成三个.png图像,并为这些图像创建三个新的worksheets,但这些图像都是空白的。我不确定如何才能使excel文件中的chart objects正确地复制到这些新创建的图像中。 如果我能在这方面得到任何帮助,我将不胜感激,因为似乎在任何地方都没有关于pywin/win32com的深入文档。在

我已经疯狂地在网上搜索了一到两天,想让它生效。。。当你不知道所有可用的方法,甚至不知道某些方法的作用时,很难让某些东西工作起来。在

(是的,我已经阅读了图书馆附带的所有“自述”文件,也阅读了他们网站上提供的内容。)


Tags: 文件方法图像trueobjectschartexcelwin32com
2条回答

将现有图表复制为图片,但不要对其进行任何操作。在

插入工作表,不添加任何数据,然后在工作表中嵌入一个图表,因为没有数据要显示,所以必须是空白的,然后将空白图表作为PNG文件导出。在

我已经知道该怎么做了,但我想我会把它发布给未来的用户。在

for index in range(1, count + 1):
    currentChart = wbSheet.ChartObjects(index)
    currentChart.Copy
    currentChart.Chart.Export("chart" + str(index) + ".png")

我使用了一个count来执行for循环,这样可以动态读取excel文件中图表对象的数量。在

另外,我将范围从1开始的原因是excel中的VB将对象的索引从1开始,而不是零。在

相关问题 更多 >