2011-04-06 20 views
5

Sto usando Excel per disegnare grafici da C#, ma ho bisogno che il grafico sia una serie correlata tra loro non due serie (quando seleziono un intervallo che ha due colonne di dati)
può qualsiasi un aiuto:Grafici 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); 

grazie

+0

Sono confuso su quello che stai cercando di fare. –

+0

quando si dispone di una colonna di dati in Excel e li si seleziona e si inserisce il grafico, può generare serie di linee di rimorchio in grafico o generare una serie (cioè: riga) che è relativa a entrambe le colonne come se la prima colonna fosse x- asse e il secondo è l'asse y, ho bisogno di farlo in codice non la serie di traino come ho menzionato – Abd

risposta

11

ho pulito il codice un po 'e ha aggiunto la generazione di dati casuali quindi questo dovrebbe funzionare da sola.

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

grazie ha funzionato :) – Abd

+2

+1! Ho provato il codice ma ho ottenuto un'eccezione COM a questa riga 'SeriesCollection seriesCollection = xlChart.SeriesCollection();' – GETah

+0

@GETah - Potrebbe significare che non hai installato i grafici o non hai creato correttamente il grafico Obj. Se vuoi aiuto con questo devi fornire maggiori dettagli (quale eccezione, cosa stai facendo) e fare una domanda separata. –