Interoperabilidad de Office 2007 [y superior]: recupera el color RGB
ACTUALIZAR: Si necesita determinar rgb-color en un documento de Office (formato 2007) mire mi respuesta a continuación.
Tener:
Interop.Word.dll ver.14 de VS2010 PIA,Edición Express VS2010MS Word 2010 (ver.14).docx-archivo hecho en la palabra mencionada manualmente sin interoperabilidad. El archivo contiene varias tablas con celdas de esquina coloreadas.Propósito: Para crear otro archivo .docx con Interop contenía las tablas llenas de degradado de color basadas en colores en sus esquinas.
Donde aparece el problema: Necesito transformar colores en las esquinas de las tablas.WdColor
aSystem.Drawing.Color
para calcular el gradiente. Así que trabajo con celularesShading.BackgroundPatternColor
propiedad. Y descubrí que a veces contiene el valor correcto de BGR de 24 bits y otras veces no.
El segundo caso aparece solo cuando la celda tiene uno de los colores de la paleta de temas (los colores estándar y rgb-paleta funcionan bien, pero los colores de la paleta de temas pueden causar problemas). Por ejemplo, cuando configuro0x00F2F2F2
El color (el gris más claro) se almacena endocument.xml
dentro del archivo .docx archiva correctamente peroShading.BackgroundPatternColor
la propiedad se establece en0xDC00F2FF
. Asi queColorTranslator.FromOle
Vuelve diferente color.
Por cierto, no hay WdColor para este gris en la enumeración. El gris mas clarowdColorGray05 = 0xF3F3F3
Debido a .Net Reflector. Esto significa que no todos los colores predeterminados de la paleta corresponden a los colores de enumeración.
Además, si configuro manualmente el mismo color en la paleta RGB en Word (es decir, 242, 242, 242), guardar archivo y abrir de nuevo con Interop - el color se establecerá correctamente como0x00F2F2F2
!
Pregunta: ¿Alguien tuvo ese problema? Cómo recuperar correctamente el color RGB deShading.BackgroundPatternColor
¿propiedad? Por qué esta propiedad no corresponde al valor almacenado endocument.xml
?