2

我想通过使用 VS 2012 的 windows 服务和 word 的互操作程序集为 Word 2010 中的图表中的所有系列设置不同的颜色。

我知道将其设置为:

    Series series1.Format.Line.ForeColor.RGB = (int)XlRgbColor.xlDarkGoldenrod;

但我想设置精确的 RGB 值,例如(111,154,169),而不是一些预定义的颜色(甚至不是 hexValues)。

我正在使用 System.Drawing.Color 结构找到一些方法来做到这一点,但徒劳无功。

4

1 回答 1

1

尝试:

Series series1.Format.Line.ForeColor.RGB = System.Drawing.Color.FromArgb(111,154,169).ToArgb()

请注意,至少在 Excel 中,R 和 B 值有时是相反的,因此如果颜色不匹配,请尝试切换 R 和 B 组件。

请参阅另一个线程的引用:使用十六进制更改 Excel 单元格的背景色会导致 Excel 在电子表格中显示完全不同的颜色

经过大量测试,我终于弄明白了,这真的很简单。显然,Excel 的 Interop 库有一个错误,并且正在反转红色和蓝色值,所以我不需要传递 RGB 的十六进制,而是需要传递 BGR,突然颜​​色就可以正常工作了。我很惊讶互联网上其他任何地方都没有记录这个错误。

因此,如果其他人遇到此问题,只需在 BGR 值中传递 Excel 值。(或者如果使用 Color.FromArgb(),则传入 Color.FromArgb(B, G, R))

于 2014-02-26T16:42:51.260 回答