繁体   English   中英

通过python使用win32com刮取图表对象的Excel文件并将其转换为图像

[英]Using win32com via python to scrape excel file for chart objects and convert them to images

我正在尝试为chart objects抓取.xlsx excel文件并将其导出为图像。 唯一的类似计算器的问题,我发现这一个 ,它试图做同样的事情。 但是,该脚本似乎不起作用(即使我更正了语法/方法)。 我愿意在Python 2.7.93.4.0.运行它3.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上似乎没有任何深入的文档。

我一直在疯狂地搜索互联网,现在试图使它工作一两天。如果您不知道所有可用的方法,甚至不知道某些可用的方法,都很难工作。方法呢。

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

我已经弄清楚该怎么做,但是我想将其发布给以后的用户。

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开始,而不是零。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM