2016-04-07 11 views
2

Ich habe versucht, Daten zu verwenden, um ein Diagramm in einem Excel-Blatt zu erstellen. Meine Datenquelle ist dieselbe Arbeitsmappe. Die Daten sind in Blatt 1 und ich möchte das Diagramm in Blatt 2 erstellen. Ich habe fast alle StackOverflow-Threads und andere Webressourcen gelesen. Ich kann nicht finden, wo ich falsch gelaufen bin. Die Grafik zeigt nichts als die Achsen korrekt skaliert.Wie zeichnen Sie die Datenpunkte in Excel mit C#?

Ich möchte die Spalte A (X-Achse) gegen B, C, D und E in vier verschiedenen Linien-/Balkendiagrammen darstellen. Ich benutze Microsoft.Office.Interop.Excel Namensraum.

Dies ist das Code-Snippet.

Worksheet sheet2 = workBook.Worksheets[2]; 
ChartObjects chart = sheet2.ChartObjects(Type.Missing); 
ChartObject[] chartObj = {chart.Add(10, 10, 550, 300), chart.Add(580, 10, 550, 300), chart.Add(10, 350, 550, 300), chart.Add(580, 350, 550, 300) }; 
int[,] rangeVal = { { 0, 400 }, { 0, 100 }, { 0, 300 }, { 0, 5 } }; 
for (int col = 2; col <= colsCount; col++) 
{ 
    Chart myChart = chartObj[col-2].Chart; 
    chartObj[col - 2].Select(); 

    myChart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine; 
    SeriesCollection seriesCollection = myChart.SeriesCollection(); 

    Series series1 = seriesCollection.NewSeries(); 
    series1.Name = sheet1.Cells[1,col].Value.ToString(); 
    series1.XValues = sheet1.get_Range("A2","A" + (rowsCount + 1).ToString()); 
    series1.Values = sheet1.get_Range((char)((int)'A' + col - 1) + "2", (char)((int)'A' + col - 1) + (rowsCount + 1).ToString()); 

    series1.ChartType = XlChartType.xlLine; 
    myChart.PlotBy = XlRowCol.xlRows; 
    myChart.Axes(XlAxisType.xlValue).MinimumScale = rangeVal[col-2,0]; 
    myChart.Axes(XlAxisType.xlValue).MaximumScale = rangeVal[col-2,1]; 
    //myChart.SetSourceData(sheet1.get_Range((char)((int)'A' + col - 1) + "2", (char)((int)'A' + col - 1) + (rowsCount + 1).ToString())); 
} 

Dies ist der Screenshot des Diagramms mit SetSourceData Aussage kommentiert: GraphWithoutSetSourceData

Dies ist der Screenshot des Graphen mit SetSourceData aktiviert: GraphWithSetSourceData

Und mein Datensatz hat keine Nullwerte.

Jede Hilfe wäre willkommen!

Antwort

0

Für jeden, der nach Antworten sucht. Das war mein Szenario:

Ich las Daten von MySQL in eine DataTable und das Problem war, wie ich die Daten in Sheet1 speicherte. Ich habe sie als String-Werte gespeichert. Und deshalb konvertiert der Teil, wo ich die Daten von Blatt 1 gelesen habe, keine String-Werte in numerische Werte. Es nimmt es einfach als 0 an.

Der obige Code funktioniert ansonsten perfekt.

Dummer Fehler! :)