2011-03-29 79 views
2

我遇到了一個小問題。我創建了一個代碼,它創建一個包含幾條記錄的Excel工作表並創建折線圖。但問題是我似乎無法將圖表定位在指定位置。這裏是我的代碼:C#4.0 Excel生成圖表和位置

excelApp.ActiveSheet.Shapes.AddChart.Select(); 
excelApp.ActiveChart.ChartType = Excel.XlChartType.xlLine; 
excelApp.ActiveChart.SetSourceData(Source: excelApp.Range["Sheet1!$A$1:$B$7"]); 
excelApp.ActiveChart.Parent.Name = "mainChartView"; 
excelApp.ActiveChart.Shapes.Item(excelApp.ActiveChart.Name).Top = 100; 
// or excelApp.ActiveChart.Shapes.Item("mainChartView").Top = 100; 

都返回以下錯誤:

ArgumentExecption was unhandled (The item with the specified name wasn't found). 

這是錯誤行:

excelApp.ActiveChart.Shapes.Item(excelApp.ActiveChart.Name).Top = 100; 
// or excelApp.ActiveChart.Shapes.Item("mainChartView").Top = 100; 

我真的希望你們中的一個具有正確awnser,幫助非常感謝!

編輯:解決方案是:

excelApp.ActiveSheet.Shapes.Item("mainChartView").Top = 20; 
+0

您是否試圖給活動圖表設置名稱? – HABJAN 2011-03-29 20:28:43

+0

我已經找到了awnser。我嘗試了一些其他設置,並自己找到了工作的一個。我用解決方案編輯了我的問題。 – Wesley 2011-03-29 20:34:05

+0

請將您的答案從您的問題轉移到下面的新答案,然後將其標記爲正確的答案。 – tomfanning 2011-03-29 20:35:38

回答

1

我已經找到了自己的anwser。

我代替:

excelApp.ActiveChart.Shapes.Item(excelApp.ActiveChart.Name).Top = 100; 

有:

excelApp.ActiveSheet.Shapes.Item("mainChartView").Top = 20; 
0

你設置.Parent Name屬性,你不應該設置圖表對象本身的名字嗎?你有Chart對象嗎?設置其名稱屬性

excelApp.ActiveSheet.Shapes.AddChart應該返回一個形狀類型(在你的情況圖)。設置該類型的名稱屬性,然後嘗試

+0

我已經找到了解決方案。但是,不,您確實需要設置父級名稱,否則您將設置innerChart名稱。這只是餡餅本身。 – Wesley 2011-03-30 20:48:34

1

你也應該能夠使用:

excelApp.ActiveChart.Parent.Top = 100;