2013-04-09 69 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,或者如果我將循環取出,代碼將返回到輸出空白圖片。我不明白,但認爲我會傳遞我的觀察結果。