Laden...

NetOffice API: Excel Problem/Frage - Hintergrundfarbe einer Row ändern

Erstellt von cordell vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.993 Views
C
cordell Themenstarter:in
63 Beiträge seit 2007
vor 10 Jahren
NetOffice API: Excel Problem/Frage - Hintergrundfarbe einer Row ändern

Servus,

ich benutze die NetOffice API um Daten einzulesen und diese zu verarbeiten. Bspw. habe ich in einer Registerkarte eine Liste von Zeilen die ich einlese. Ich möchte, nach der Verarbeitung einer Zeile, diese mit einer Farbe versehen, so das gleich auf den ersten Blick ersichtlich ist, welche Zeilen verarbeitet worden sind.

Hier ein kleines Stück Code, wie ich mir das vorgestellt habe:


foreach (Excel.Range row in rg)
{
    //do the processing...
    ...
    row.Interior.Color = XlRgbColor.rgbAliceBlue;
}

Beim Debuggen bekomme ich aber ständig eine COMException mit HRESULT: 0x800A03EC in der Zeile der Zuweisung der Farbe. Ich hab schon einiges gegoogled, gelesen und gesucht.

Beim Öffnen der Exceldatei habe ich in der Open()-Methode schon darauf geachtet, dass die Properties readOnly auf false, editable auf true und corruptLoad auf true gesetzt sind. Weiterhin habe ich es auch mit Excel 97-2003 Format (.xls), wie auch Excel2007-2010 (.xlsx) Format probiert, auch ohne Erfolg.

Wär super, wenn jemand Rat wüsste. Danke im Voraus.

Cordell

unsere Feinde benutzen Ninjitsu, um den Weltfrieden zu stören!

Gelöschter Account
vor 10 Jahren

Excel kann mit dem Farbwert so erstmal nix anfangen, daher musst du diesen konvertieren. Wie das geht zeigt folgendes Beispiel:
Excel Beipiel

4.221 Beiträge seit 2005
vor 10 Jahren

Nur aus Interesse:

Ist diese Konvertierung nicht das selbe wie Color.XXX.ToArgb() ?

Gruss
Programmierhans

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

C
cordell Themenstarter:in
63 Beiträge seit 2007
vor 10 Jahren

Excel kann mit dem Farbwert so erstmal nix anfangen, daher musst du diesen konvertieren. Wie das geht zeigt folgendes Beispiel:

>

Bringt leider gar nichts. Bekomme immer noch die selben Fehler. Was ich jetzt aber noch raus gefunden habe ist, dass die Exceldatei einen Blattschutz besitzt. Habe daraufhin versucht mit

 app.ActiveWorkbook.Unprotect();

den Blattschutz zu entfernen. Bekomme aber auch hier ein COMException mit {"Die Unprotect-Eigenschaft des Workbook-Objektes kann nicht zugeordnet werden."} Ich benutze das ActiveWorkbook-Objekt, da kein anderes Object die Unprotect()-Methode besitzt.

unsere Feinde benutzen Ninjitsu, um den Weltfrieden zu stören!

M
53 Beiträge seit 2008
vor 10 Jahren

Moin cordell,

auch das Sheet hat eine Unprotect() Methode.

Worksheet sheet = Application.ActiveWorkbook.ActiveSheet;
sheet.Unprotect();

Gruß
muhtanten

C
cordell Themenstarter:in
63 Beiträge seit 2007
vor 10 Jahren

Ja das ist richtig, dass das Sheet diese Methode auch besitzt. Es kommt aber zum identischen Fehler, dass die Unprotect Eigenschaft nicht zugeordnet werden kann.
Das ist zum Haare raufen. 😦

unsere Feinde benutzen Ninjitsu, um den Weltfrieden zu stören!