Office 2007 [und höher] interop: RGB-Farbe abrufen


AKTUALISIEREN: Wenn Sie die RGB-Farbe in einem Office-Dokument (Format 2007) bestimmen müssen, sehen Sie sich meine Antwort unten an.

Haben:

Interop.Word.dll ver.14 von VS2010 PIA,VS2010 Express EditionMS Word 2010 (Version 14).docx-Datei in erwähntem Word manuell ohne Interop erstellt. Die Datei enthält mehrere Tabellen mit farbigen Eckzellen.

Zweck: Um eine weitere .docx-Datei mit Interop zu erstellen, wurden diese Tabellen mit Verlaufsfarben basierend auf den Farben in den Ecken gefüllt.
Wo das Problem auftritt: Ich muss Farben in Tabellenecken von transformierenWdColor zuSystem.Drawing.Color Steigung berechnen. Also arbeite ich mit ZellenShading.BackgroundPatternColor Eigentum. Und ich habe festgestellt, dass es manchmal den richtigen BGR-24-Bit-Wert enthält und manchmal nicht.
Der zweite Fall wird nur angezeigt, wenn in der Zelle eine der Farben der Themenpalette vorhanden ist (Standard- und RGB-Farben funktionieren gut, aber die Farben der Themenpalette führen zu Problemen). Zum Beispiel, wenn ich setze0x00F2F2F2 (die hellste graue) Farbe, in der sie gespeichert wirddocument.xml im .docx-datei archiv richtig aberShading.BackgroundPatternColor Eigenschaft ist festgelegt auf0xDC00F2FF. SoColorTranslator.FromOle gibt andere Farbe zurück.
Übrigens gibt es für dieses Grau in enum keine WdColor. Das hellste GrauwdColorGray05 = 0xF3F3F3 aufgrund von .Net Reflector. Dies bedeutet, dass nicht alle Standardfarben der Palette den Aufzählungsfarben entsprechen.
Auch wenn ich die gleiche Farbe in der RGB-Palette in Word manuell einstelle (zB 242, 242, 242), speichere ich die Datei und öffne sie erneut über Interop - die Farbe wird korrekt als eingestellt0x00F2F2F2!
Frage: Hat jemand dieses Problem? So rufen Sie die RGB-Farbe ordnungsgemäß von abShading.BackgroundPatternColor Eigentum? Warum entspricht diese Eigenschaft nicht dem in gespeicherten Wert?document.xml?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage