2015-10-13 20 views
0

我正在嘗試使用C#.net生成幻燈片幻燈片的圖表。當我對數據進行硬編碼時,圖表完美工作,所以我的目標是能夠從我的應用程序數據表中填充excel後端。我需要什麼是定義數據範圍幫助(見下文)使用C#動態添加範圍值以優化圖表#

var areaworkbook = (EXCEL.Workbook)areachart.ChartData.Workbook; 
areaworkbook.Windows.Application.Visible = false; 

var dataSheet2 = (EXCEL.Worksheet)areaworkbook.Worksheets[1]; 
var sc2 = areachart.SeriesCollection(); 

dataSheet1.Cells.Range["A2"].Value2 = "Name 1"; 
dataSheet1.Cells.Range["A3"].Value2 = "Name 2"; 
dataSheet1.Cells.Range["A4"].Value2 = "Name 3"; 
dataSheet1.Cells.Range["A5"].Value2 = "Name 4"; 
dataSheet1.Cells.Range["B2"].Value2 = Value 1; 
dataSheet1.Cells.Range["B3"].Value2 = value 2; 
dataSheet1.Cells.Range["B4"].Value2 = value 3; 
dataSheet1.Cells.Range["B5"].Value2 = value 4 ; 

var series2 = sc2.NewSeries(); 
series2.Name = "Series 2"; 
series2.XValues = "'Sheet1'!$A$2:$A$5"; 
series2.Values = "'Sheet1'!$C$2:$C$5"; 
series2.ChartType = Office.XlChartType.xlAreaStacked; 


areachart.HasTitle = true; 
areachart.ChartTitle.Font.Bold = true; 
areachart.ChartTitle.Font.Italic = true; 
areachart.ApplyLayout(4); 
areachart.Refresh(); 

我將如何動態地添加A6,A7,A8 ......直到我的數據表是否已經完成?

回答

2

只需使用一個循環並計算單元地址。爲了爭辯,我將假設數據來自Linq查詢,儘管您可以通過任何其他方式得到它。

int row = 2; // You expect to start here 
foreach (var data in db.MyData().Where(... whatever you need here ...)) 
{ 
    dataSheet1.Cells.Range["A" + row].Value2 = data.Name; 
    dataSheet1.Cells.Range["B" + row].Value2 = data.Value; 
    row++; 
} 

series2.XValues = "'Sheet1'!$A$2:$A$" + row; 
series2.Values = "'Sheet1'!$C$2:$C$" + row;