Interop Office 2007 [i wyższe]: pobieranie koloru RGB


AKTUALIZACJA: Jeśli chcesz określić rgb-color w dokumencie biurowym (format 2007), spójrz na moją odpowiedź poniżej.

Mieć:

Interop.Word.dll wer. 14 z VS2010 PIA,VS2010 Express EditionMS Word 2010 (wersja 14)Plik .docx wykonany we wspomnianym słowie ręcznie bez Interop. Plik zawiera kilka tabel z kolorowymi komórkami narożnymi.

Cel, powód: Aby zbudować inny plik .docx z Interopem, zawierały te tabele wypełnione kolorem gradientu w oparciu o kolory w rogach.
Gdzie pojawia się problem: Muszę przekształcić kolory w rogach tabel odWdColor doSystem.Drawing.Color obliczyć gradient. Więc pracuję z komórkamiShading.BackgroundPatternColor własność. I odkryłem, że czasami zawiera poprawną 24-bitową wartość BGR, a czasami nie.
Drugi przypadek pojawia się tylko wtedy, gdy komórka ma jeden z kolorów palety motywów (kolory palety standardowej i rgb działają dobrze, ale kolory palety motywu prowadzą do problemu). Na przykład, kiedy ustawiam0x00F2F2F2 (najjaśniejszy szary) kolor, a następnie przechowuje wdocument.xml wewnątrz archiwum .docx poprawnie, aleShading.BackgroundPatternColor właściwość jest ustawiona na0xDC00F2FF. WięcColorTranslator.FromOle zwraca inny kolor.
Btw, nie ma WdColor dla tego szarego w enum. Najwyszy szarywdColorGray05 = 0xF3F3F3 z powodu .Net Reflector. Oznacza to, że nie wszystkie domyślne kolory palety odpowiadają kolorom wyliczeniowym.
Również jeśli ręcznie ustawię ten sam kolor w palecie RGB w programie Word (np. 242, 242, 242), zapisz plik i otwórz go ponownie za pomocą Interop - kolor zostanie ustawiony prawidłowo,0x00F2F2F2!
Pytanie: Czy ktoś miał ten problem? Jak prawidłowo pobrać kolor RGB zShading.BackgroundPatternColor własność? Dlaczego ta właściwość nie odpowiada wartości przechowywanej wdocument.xml?

questionAnswers(1)

yourAnswerToTheQuestion