2013-04-09 72 views
3

我在工作表上有多个图表的excel文件。我从excel中获取图表并将其保存为图片。Excel.Chart.Export不起作用

我的代码:

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); 
} 

但只有空白的画面输出。

请帮我

+0

它可以与其他文件类型(例如.PNG或.JPG)一起使用吗? – 2013-04-09 20:15:16

+0

不适用于任何文件类型 – 2013-04-10 02:31:21

+0

“Img \”+ chart.Chart.Name +“.bmp”)''之前的''是什么? – 2013-04-10 02:52:16

回答

2

导出,在调用的时候是不是在屏幕上至少部分地可见。出口出现导致空白影像图。

尝试添加一行代码激活图表导出它(我遇到同样的问题,这个工作对我来说)之前导出:

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); 
+0

谢谢!它为我工作..你救了我的一天!干杯 – 2017-03-07 09:28:03

1

我遇到了同样的问题,并试图.Activate技巧,但这并没有帮助。根据该意见,即图表需要成为至少部分可见,我尝试了一个简单的延迟循环正好。出口行之前:

For i = 1 to N 
    DoEvents 
Next i 

这个固定的问题。通过一些实验,我发现N> = 3有效,但是如果N = 1或2,或者如果我将循环取出,代码将返回到输出空白图片。我不明白,但认为我会传递我的观察结果。