Markierung von einzelnen Datenpunkten funktioniert nicht.

03/09/2007 - 17:23 von Akiono Wan | Report spam
Hallo,

ich steuere Excel aus C# heraus und erstelle automatisch Diagramme.
Zur besseren Lesbarkeit bei einem Schwarz-Weiss Druck möchte ich zur
Unterscheidung der Linien einzelne Diagrammpunkte markieren. Dies
funktioniert auch in soweit, dass die Markierung aller Datenpunkte
über das Series Object funktioniert. Leider will ich aber nur einzelne
Punkte markieren und dies funktioniert nicht, obwohl ich mir sehr
sicher bin, dass ich das richtige Object verwende. Zur Verstàndnis
bzw. Fehleranalyse mein Quellcode, der ausschlieslich die Formatierung
beeinhaltet.

Formatierung aller Datenpunkte mit Markern (dies funktioniert
fehlerfrei):
chart4 ist dabei mein Diagramm und mySeries eine Datenreihe.

Excel.Series mySeries = (Excel.Series) chart4.SeriesCollection(1);
mySeries.MarkerStyle = Excel.XlMarkerStyle.xlMarkerStyleSquare;
mySeries.MarkerBackgroundColorIndex = (Excel.XlColorIndex)3;
mySeries.MarkerForegroundColorIndex = (Excel.XlColorIndex)3;
mySeries.MarkerSize =7;

Nachdem dies funktioniert, dachte ich mir anstatt die Komplette
Datenreihe zu markieren, nehme ich einen einzelnen Punkt und markieren
diesen und habe den Quellcode ersetzt in:
Formatierung eines einzelnen Datenpunktes(funktioniert nicht!):

Excel.Series mySeries = (Excel.Series) chart4.SeriesCollection(1);
Excel.Point myPoint = (Excel.Point) mySeries.Points(100);
myPoint.MarkerStyle = Excel.XlMarkerStyle.xlMarkerStyleSquare;
myPoint.MarkerBackgroundColorIndex = (Excel.XlColorIndex)3;
myPoint.MarkerForegroundColorIndex = (Excel.XlColorIndex)3;
myPoint.MarkerSize = 7;

Leider wird der gewünschte Punkt 100, der auch existiert, nicht
formatiert und sieht genauso aus wie alle anderen.
Wenn einer eine Idee hat, was ich falsch mache oder vergesse wàre mir
sehr geholfen. Ich bin für jeden Tipp oder Hilfe dankbar.
Viele Grüße
Akiono Wan
 

Lesen sie die antworten

#1 Akiono Wan
03/09/2007 - 17:39 | Warnen spam
Hi,
ich habe gerade noch etwas ausprobiert und es klappt nun. Die Frage
ist nur warum?
Ich habe anstatt dem Excel._Chart Interface das ich so instanziert
habe:
//Add a Chart to the workbook.
chart4 = (Excel.Chart)workbook.Charts.Add( Missing.Value,
Missing.Value,Missing.Value, Missing.Value );

Das Excel.ChartObject verwendet:
myChObj2 = (Excel.ChartObject) myWorksheet4.ChartObjects(2);

Dabei sind chart4 und ChartObject(2) identisch nur die Namen passen
nicht ganz.

Also Ergebnis ist, mit folgendem Code funktioniert die Markierung:

Excel.Series mySeries = (Excel.Series)
myChObj2.Chart.SeriesCollection(1);
Excel.Point myPoint = (Excel.Point) mySeries.Points(100);
myPoint.MarkerStyle = Excel.XlMarkerStyle.xlMarkerStyleSquare;
myPoint.MarkerBackgroundColorIndex = (Excel.XlColorIndex)3;
myPoint.MarkerForegroundColorIndex = (Excel.XlColorIndex)3;
myPoint.MarkerSize = 7;

Also ich hab keine Ahnung wo der Unterschied liegt, da ich ja über das
chart4 Object auch auf das Series Object zugreifen konnte.
Wenn einer dafür noch eine Erklàrung hat, wàre das toll. Wenn nicht
aber auch nicht schlimm, da es ja jetzt so funktioniert, wie es soll.

Viele Grüße
Ein gespannter
Akiono Wan

Ähnliche fragen