2011-04-06 51 views
5

Estoy utilizando Excel para dibujar gráficos de C#, pero necesito que el gráfico sea una serie relacionada entre sí no dos series (cuando selecciono un rango que tiene dos columnas de datos)
puede una ayuda:Gráficos de 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); 

gracias

+0

No estoy seguro de lo que está intentando hacer. –

+0

cuando tiene la columna de datos remolcados en Excel y los selecciona e inserta el gráfico, puede generar series de líneas de remolque en líneas en el gráfico o puede generar una serie (es decir: línea) que es relativa a ambas columnas como si la primera columna fuera x- eje y el segundo es el eje y, tengo que hacer esto en el código no la serie de remolque como mencioné – Abd

Respuesta

11

me limpió el código un poco y agrega la generación de datos aleatorios por lo que este debe correr por su cuenta.

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

gracias funcionó :) – Abd

+2

+1! Intenté su código pero obtuve una Excepción COM en esta línea 'SeriesCollection seriesCollection = xlChart.SeriesCollection();' – GETah

+0

@GETah - Podría significar que no instaló los gráficos o no creó el chartObj correctamente. Si necesita ayuda con esto, deberá proporcionar más detalles (qué excepción, qué está haciendo) y hacer otra pregunta. –