Hi!
Ich möchte eine Messwertreihe, dessen Daten in meinem Programm vorhanden sind, als Excel-Diagramm ausgeben.
Prinzipiell klappt das auch, aber mir bleiben für mich wichtige Dinge im Verborgenen, wie z.B. Achsenformatierungen des Koordinatensystems, also dass z.B. die x-Achse Werte von 0 bis 100 anzeigt, anstatt automatisch von Messwertgrenze zu Messwertgrenze.
Das ist mein Programmabschnitt:
[highlight=vbnet]
Dim ExApp As New Microsoft.Office.Interop.Excel.Application()
Dim NichtNull As Integer = 0
With ExApp
.Visible = True
.Workbooks.Add()
.Range("A1").Value = "Messwerte"
For n As Short = 1 To TempXYZ1.Length
If TempXYZ1(n - 1) <> 0 Then
NichtNull += 1
ExApp.ActiveSheet.Cells(NichtNull, 1).value = CStr(TempXYZ1(n - 1))
End If
Next
End With
Dim r As Microsoft.Office.Interop.Excel.Range = _
ExApp.ActiveSheet.Range("A1:A" & CStr(NichtNull))
Dim ch As Microsoft.Office.Interop.Excel.ChartObject = _
ExApp.ActiveSheet.Chartobjects.add(90, 30, (Log(TempXYZ1.Length)) ^ 2 _
* 100, 300)
With ch.Chart
.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLineM arkers
.SetSourceData(r)
.HasTitle = True
.ChartTitle.Characters.Text = "Temperaturverlauf"
End With
[/highlight]
"TempXYZ1" ist ein Array mit den Temperaturwerten.
Ich denk mal, man müsste was in dem Bereich ändern:
[highlight=vbnet]
Dim ch As Microsoft.Office.Interop.Excel.ChartObject = _
ExApp.ActiveSheet.Chartobjects.add(90, 30, (Log(TempXYZ1.Length)) ^ 2 _
* 100, 300)
With ch.Chart
.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLineM arkers
.SetSourceData(r)
.HasTitle = True
.ChartTitle.Characters.Text = "Temperaturverlauf"
End With
[/highlight]
Die Ln-Funktion kann man ignorieren, ist einfach zur übersichtlicheren Darstellung des Graphs da.
Darüber hinaus würde ich auch noch gerne weitere Formatierungen wie verschiedene Linienfarben haben (zur Darstellung mehrerer Graphen, insgesamt 4), die Linienart abändern (Eine einfache, durchgehende Linie wär mir am liebsten, ohne fetten Punkt bei jedem Messwert) sowie die Legende anders beschriften.
Kann mir da jemand auf die Sprünge helfen?
mfg, Tobi
Ich möchte eine Messwertreihe, dessen Daten in meinem Programm vorhanden sind, als Excel-Diagramm ausgeben.
Prinzipiell klappt das auch, aber mir bleiben für mich wichtige Dinge im Verborgenen, wie z.B. Achsenformatierungen des Koordinatensystems, also dass z.B. die x-Achse Werte von 0 bis 100 anzeigt, anstatt automatisch von Messwertgrenze zu Messwertgrenze.
Das ist mein Programmabschnitt:
[highlight=vbnet]
Dim ExApp As New Microsoft.Office.Interop.Excel.Application()
Dim NichtNull As Integer = 0
With ExApp
.Visible = True
.Workbooks.Add()
.Range("A1").Value = "Messwerte"
For n As Short = 1 To TempXYZ1.Length
If TempXYZ1(n - 1) <> 0 Then
NichtNull += 1
ExApp.ActiveSheet.Cells(NichtNull, 1).value = CStr(TempXYZ1(n - 1))
End If
Next
End With
Dim r As Microsoft.Office.Interop.Excel.Range = _
ExApp.ActiveSheet.Range("A1:A" & CStr(NichtNull))
Dim ch As Microsoft.Office.Interop.Excel.ChartObject = _
ExApp.ActiveSheet.Chartobjects.add(90, 30, (Log(TempXYZ1.Length)) ^ 2 _
* 100, 300)
With ch.Chart
.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLineM arkers
.SetSourceData(r)
.HasTitle = True
.ChartTitle.Characters.Text = "Temperaturverlauf"
End With
[/highlight]
"TempXYZ1" ist ein Array mit den Temperaturwerten.
Ich denk mal, man müsste was in dem Bereich ändern:
[highlight=vbnet]
Dim ch As Microsoft.Office.Interop.Excel.ChartObject = _
ExApp.ActiveSheet.Chartobjects.add(90, 30, (Log(TempXYZ1.Length)) ^ 2 _
* 100, 300)
With ch.Chart
.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLineM arkers
.SetSourceData(r)
.HasTitle = True
.ChartTitle.Characters.Text = "Temperaturverlauf"
End With
[/highlight]
Die Ln-Funktion kann man ignorieren, ist einfach zur übersichtlicheren Darstellung des Graphs da.
Darüber hinaus würde ich auch noch gerne weitere Formatierungen wie verschiedene Linienfarben haben (zur Darstellung mehrerer Graphen, insgesamt 4), die Linienart abändern (Eine einfache, durchgehende Linie wär mir am liebsten, ohne fetten Punkt bei jedem Messwert) sowie die Legende anders beschriften.
Kann mir da jemand auf die Sprünge helfen?
mfg, Tobi
Comment