Office 2007 [e superior] interoperabilidade: recuperar cores RGB


ATUALIZAR: Se você precisar determinar a cor rgb no documento do office (formato 2007), veja minha resposta abaixo.

Ter:

Interop.Word.dll ver.14 do VS2010 PIA,VS2010 Express EditionMS Word 2010 (ver.14).docx-file feito manualmente no Word mencionado sem Interop. Arquivo contém várias tabelas com células de canto coloridas.

Objetivo: Para construir outro arquivo .docx com Interop continha as tabelas preenchidas com gradiente de cor com base nas cores em seus cantos.
Onde o problema aparece: Eu preciso transformar cores em cantos de tabelas deWdColor paraSystem.Drawing.Color para calcular o gradiente. Então eu trabalho com celularShading.BackgroundPatternColor propriedade. E eu descobri que às vezes ele contém o valor correto de BGR de 24 bits e outras vezes não.
O segundo caso aparece apenas quando a célula tem uma das cores da paleta de temas (as cores padrão e rgb-palette funcionam bem, mas as cores da paleta de tema levam ao problema). Por exemplo, quando eu definir0x00F2F2F2 (a cor cinza mais clara) então armazena emdocument.xml dentro do arquivo .docx-file corretamente, masShading.BackgroundPatternColor propriedade está definida para0xDC00F2FF. assimColorTranslator.FromOle retorna cor diferente.
Btw, não há WdColor para este cinza em enum. O cinza mais clarowdColorGray05 = 0xF3F3F3 devido ao .Net Reflector. Isso significa que nem todas as cores padrão da paleta correspondem às cores enum.
Além disso, se eu definir manualmente a mesma cor na paleta RGB no Word (ou seja, 242, 242, 242), salve o arquivo e abra novamente pelo Interop - a cor será definida corretamente como0x00F2F2F2!
Questão: Alguém teve esse problema? Como recuperar corretamente a cor RGB deShading.BackgroundPatternColor propriedade? Por que essa propriedade não corresponde ao valor armazenado emdocument.xml?

questionAnswers(1)

yourAnswerToTheQuestion