Excel.Chart.Export not working

本文关键字:working not Export Chart Excel | 更新日期: 2023-09-27 18:08:32

我有多个表格上的excel文件。我从excel中获取图表并保存到图片中。

我代码:

workSheet = workBook.Sheets[1] as Excel._Worksheet;
Excel.ChartObjects chartObjects =(Excel.ChartObjects)workSheet.ChartObjects(Type.Missing);
int chartCount = chartObjects.Count;
for (int j = 1; j <= chartCount; j++)
{
     Excel.ChartObject chart = (Excel.ChartObject)chartObjects.Item(j);
     path = Path.Combine(Application.StartupPath, @"Img'" + chart.Chart.Name + ".bmp");
     chart.Chart.Export(path, "BMP", true);
}

但只能导出空白图片

请帮帮我

Excel.Chart.Export not working

导出在调用。export时在屏幕上至少部分不可见的图表似乎会导致空白图像。

尝试添加一行代码来激活要导出的图表,然后再导出它(我遇到了同样的问题,这对我有效):

Excel.ChartObject chart = (Excel.ChartObject)chartObjects.Item(j);
path = Path.Combine(Application.StartupPath, @"Img'" + chart.Chart.Name + ".bmp");
chart.Activate(); //New line
chart.Chart.Export(path, "BMP", true);

我遇到了同样的问题,并尝试了。activate技巧,但没有帮助。根据图表至少需要部分可见的评论,我在.Export行之前尝试了一个简单的延迟循环:

For i = 1 to N
  DoEvents
Next i

修复了这个问题。经过一些实验,我发现N>= 3可以工作,但是如果N = 1或2,或者如果我将循环取出,代码将返回输出空白图片。我不明白,但我想我应该把我的观察告诉大家。

谢谢@小富您在导出之前关于图表激活的信息确实帮助了我,因为我花了将近一天的时间在我的小Python项目上寻找解决方案。欢呼。

对于那些正在寻找Python脚本版本来导出Excel图表为GIF或PNG格式的人来说,以下是为我工作的代码:

# Python function to export an Excel chart to a GIF image format
# Ref: https://stackoverflow.com/questions/11110752/export-charts-from-excel-as-images-using-python
def ChartExport(cwd, fileName):
    app = win32.Dispatch('Excel.Application')
    workbook_file_name = cwd + fileName
    workbook = app.Workbooks.Open(Filename=workbook_file_name)
    # WARNING: The following line will cause the script to discard any unsaved changes in your workbook
    app.DisplayAlerts = False
    i = 1   # There are multiple charts on the worksheet. So using a number suffix to add the output gif filename
    for sheet in workbook.Worksheets:
        for chartObject in sheet.ChartObjects():
            #print('i = ', i, ' -- ', sheet.Name + ':' + chartObject.Name)
            chartObject.Activate()  # This line was added after finding exporting problem with 2nd and 3rd charts. Thanks Xiaofu Ref: https://stackoverflow.com/questions/15911536/excel-chart-export-not-working
            chartObject.Chart.Export(cwd + '''chart' + str(i) + '.gif')  # Export chart to a gif file format
            i += 1
    workbook.Close(SaveChanges=False, Filename=workbook_file_name)
    return

我刚刚遇到了这种情况。不幸的是,使用chart.Activate()对我不起作用。然而,关于图表必须部分可见的部分给了我一个如何做的线索。我只是最大化了窗口,让我所有的图表都可见,然后导出又开始工作了。

Excel.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMaximized;    
Excel.ChartObject chart = (Excel.ChartObject)chartObjects.Item(j);
path = Path.Combine(Application.StartupPath, @"Img'" + chart.Chart.Name + ".bmp");
chart.Activate(); //New line
chart.Chart.Export(path, "BMP", true);