更新:如果您需要在 office 文档(格式 2007)中确定 rgb-color,请查看下面的答案。
有:
- 来自 VS2010 PIA 的 Interop.Word.dll ver.14,
- VS2010快捷版
- 微软 Word 2010 (ver.14)
- .docx 文件在提到的 Word 中手动制作,无需互操作。文件包含几个带有彩色角单元格的表格。
目的:
使用 Interop 构建另一个 .docx 文件,其中包含根据角落颜色填充渐变颜色的表格。
出现问题的地方:我需要将表格角落的颜色从WdColor
toSystem.Drawing.Color
转换为计算渐变。所以我使用细胞的Shading.BackgroundPatternColor
属性。而且我发现有时它包含正确的 BGR 24 位值,有时它不包含。
仅当单元格具有主题调色板颜色之一时才会出现第二种情况(标准和 rgb 调色板颜色效果很好,但主题调色板颜色会导致问题)。例如,当我设置0x00F2F2F2
(最浅的灰色)颜色时,它会document.xml
正确存储在 .docx 文件存档中,但Shading.BackgroundPatternColor
属性设置为0xDC00F2FF
. 所以ColorTranslator.FromOle
返回不同的颜色。
顺便说一句,枚举中这个灰色没有 WdColor 。wdColorGray05 = 0xF3F3F3
.Net Reflector带来的最浅灰色。这意味着并非所有调色板默认颜色都对应于枚举颜色。
此外,如果我在 Word 的 RGB 调色板中手动设置相同的颜色(即 242、242、242),保存文件并通过 Interop 再次打开 - 颜色将正确设置为0x00F2F2F2
!
问题:有人遇到过这个问题吗?如何从Shading.BackgroundPatternColor
属性中正确检索 RGB 颜色?为什么此属性与存储在中的值不对应document.xml
?