Hallo Miteinander,
Ich möchte ein paar Messdaten, die ich ich während des Prozesses in einem Array ablege, in einem Excel Diagramm darstellen und speichern.
Das übertragen der Werte in ein Excel und das erstellen des Diagramm ist bereits erledigt und funktioniert einwandfrei.
Da aktuell nur eine Y-Achse (Vertikal) dargestellt wird und eine Tabellenspalte (Kraft) viel größere Werte (z.B. 1000) besitzt, als die anderen beiden Tabellenspalten (z.B. 10), ist die Skalierung des Diagramm nicht gerade perfekt. Nun möchte ich, dass im Diagramm die Tabellespalte (Kraft) als Sekundärachse dargestellt wird.
Wie kann nun die Sekundärachse hinzugefügt werden und an die gewünchte Tabellenspalte zugewiesen werden?
Aktueller Code: Erstellen des Diagramms
// Name des dritten Arbeitsblattes
myExcelWorkSheet3 = (Excel.Worksheet)myExcelWorkbook.Sheets["Diagramm"];
// Diagramm erstellen
Excel.Range chartRange;
Excel.ChartObjects xlCharts = (Excel.ChartObjects)myExcelWorkSheet3.ChartObjects(Type.Missing);
Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 50, 650, 400);
Excel.Chart chartPage = myChart.Chart;
chartRange = myExcelWorkSheet2.get_Range("B6", "E" +(i+7).ToString()); // Daten für Diagramm einlesen
//Achsen Beschriftung X-Achse
Excel.Axis xAchse = (Excel.Axis)chartPage.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary);
xAchse.HasTitle = true;
xAchse.AxisTitle.Text = "Zeit [s]";
//Achsen Beschriftung Y-Achse
Excel.Axis yAchse = (Excel.Axis)chartPage.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary);
yAchse.HasTitle = true;
yAchse.AxisTitle.Text = "Weg [mm], Temperatur [°C]";
chartPage.SetSourceData(chartRange, misValue); // Datenübergabe an Diagramm
chartPage.ChartType = Excel.XlChartType.xlLine; // Diagramm Type
Habe nun das die Änderung der Sekundärachse im Excel mit der Funktion "Makro aufzeichnen" gespeichert (in VB). Leider bin ich daraus noch nicht schlau geworden, wie ich die Funktion " FullSeriesCollection" in C# verwenden kann.
Sub Sekundärachse()
'
' Sekundärachse Makro
'
'
ActiveChart.FullSeriesCollection(2).AxisGroup = 2
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.FullSeriesCollection(2).Select
End Sub
Habt ihr dazu eine Idee?
Vielen Dank.
Habe nun die Lösung selbst herausgefunden:
//Auswahl der gewünschten Reihe als Sekundärachse (Y-Achse)
Excel.Series series2 = (Excel.Series)chartPage.FullSeriesCollection(2); //2=Reihe2
series2.Select();
series2.AxisGroup = Excel.XlAxisGroup.xlSecondary; //Sekundärachse
Je nach Wunsch kann noch die zweite X-Achse hinzufügt werden:
chartPage.set_HasAxis(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlSecondary, true);