我想通过使用VS 2012和word互操作程序集的Windows服务,为Word 2010图表中的所有系列设置不同的颜色。
我知道将其设置为:
Series series1.Format.Line.ForeColor.RGB = (int)XlRgbColor.xlDarkGoldenrod;
但是我想设置精确的 RGB 值,例如 (111,154,169),而不是一些预定义的颜色(甚至不是十六进制值)。
我正在寻找一些方法来使用System.Drawing.Color结构来做到这一点,但徒劳无功。
尝试:
Series series1.Format.Line.ForeColor.RGB = System.Drawing.Color.FromArgb(111,154,169).ToArgb()
请注意,至少在Excel中,R和B值有时会颠倒,因此如果颜色不匹配,请尝试切换R和B分量。
请参阅另一个线程中的引用:使用十六进制更改 Excel 单元格的背景色会导致 Excel 在电子表格中显示完全不同的颜色
经过大量测试,我终于想通了,这很简单。显然,Excel 的互操作库有一个错误,并且正在反转红色和蓝色值,因此我需要传递 BGR 而不是向它传递 RGB 十六进制,突然间颜色工作得很好。我很惊讶这个错误没有记录在互联网上的其他任何地方。
因此,如果其他人遇到此问题,只需在 BGR 值中传递 Excel 值即可。(或者如果使用 Color.FromArgb(),则传入 Color.FromArgb(B, G, R))