2011-04-06 30 views
5

我使用excel從c#繪製圖表,但我需要圖表爲一個相互關聯的系列而不是兩個系列(當我選擇一個範圍有兩列數據時)
可以任意一個幫助:Excel圖表+ C#

 xla.Visible = true; 
     Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet); 
     Worksheet ws = (Worksheet)xla.ActiveSheet; 

     // Now create the chart. 
     ChartObjects chartObjs = (ChartObjects)ws.ChartObjects(Type.Missing); 
     ChartObject chartObj = chartObjs.Add(100, 20, 300, 300); 
     Chart xlChart = chartObj.Chart; 
     Range rg = ws.get_Range("B2", "C17"); 
     xlChart.SetSourceData(chartRange, XlRowCol.xlColumns); 

感謝

+0

我很困惑你想做什麼。 – 2011-04-06 23:07:09

+0

當您在Excel中有兩列數據並選擇它們並插入圖表時,它可以在圖表中生成以太系列線,或者可以生成與兩列相關的一系列(即:行),就像第一列是x-軸和第二個是Y軸,我需要做的代碼不是兩個系列,因爲我提到 – Abd 2011-04-06 23:16:04

回答

11

我打掃碼了一點,並添加隨機數據的產生,所以這應該獨立運行。

Random random = new Random(); 
Microsoft.Office.Interop.Excel.Application xla = new Microsoft.Office.Interop.Excel.Application(); 
xla.Visible = true; 
Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet); 

Worksheet ws = (Worksheet)xla.ActiveSheet; 

// Now create the chart. 
ChartObjects chartObjs = (ChartObjects)ws.ChartObjects(); 
ChartObject chartObj = chartObjs.Add(150, 20, 300, 300); 
Chart xlChart = chartObj.Chart; 

// generate some random data 
for (int row = 0; row < 16; row++) 
{ 
    ws.Cells[row + 2, 2] = row + 1; 
    ws.Cells[row + 2, 3] = random.Next(100); 
} 

Range xValues = ws.Range["B2", "B17"]; 
Range values = ws.Range["C2", "C17"]; 

SeriesCollection seriesCollection = xlChart.SeriesCollection(); 

Series series1 = seriesCollection.NewSeries(); 
series1.XValues = xValues; 
series1.Values = values; 
+0

感謝它的工作:) – Abd 2011-04-07 20:20:20

+2

+1!嘗試了你的代碼,但在這一行得到了一個COM異常'SeriesCollection seriesCollection = xlChart.SeriesCollection();' – GETah 2013-03-05 14:00:44

+0

@GETah - 這可能意味着你沒有安裝圖表或沒有正確創建chartObj。如果你需要這方面的幫助,你需要提供更多的細節(有什麼例外,你在做什麼)並提出一個單獨的問題。 – 2013-03-05 14:22:37