C# 在Word中设置图表系列颜色
我想通过使用VS 2012和Word互操作程序集的windows服务,在Word 2010中为图表中的所有系列设置不同的颜色 我知道应该这样设置:C# 在Word中设置图表系列颜色,c#,office-interop,system.drawing,word-automation,C#,Office Interop,System.drawing,Word Automation,我想通过使用VS 2012和Word互操作程序集的windows服务,在Word 2010中为图表中的所有系列设置不同的颜色 我知道应该这样设置: Series series1.Format.Line.ForeColor.RGB = (int)XlRgbColor.xlDarkGoldenrod; 但我想设置精确的RGB值,例如(111154169),而不是一些预定义的颜色(甚至不是十六进制值)。 我正在使用System.Drawing.Color结构找到一些方法来实现这一点,但徒劳无
Series series1.Format.Line.ForeColor.RGB = (int)XlRgbColor.xlDarkGoldenrod;
但我想设置精确的RGB值,例如(111154169),而不是一些预定义的颜色(甚至不是十六进制值)。
我正在使用System.Drawing.Color结构找到一些方法来实现这一点,但徒劳无功。尝试:
Series series1.Format.Line.ForeColor.RGB = System.Drawing.Color.FromArgb(111,154,169).ToArgb()
请注意,至少在Excel中,R和B值有时会反转,因此如果颜色不匹配,请尝试切换R和B组件
请参阅另一个线程中的此引用:
经过大量的测试,我终于找到了答案,事情真的很简单。很明显,Excel的Interop库有一个bug,正在反转红色和蓝色的值,所以我需要传递BGR,而不是传递RGB的十六进制值,突然之间颜色工作正常。我很惊讶,这个bug在互联网上的任何地方都没有记录
因此,如果其他人遇到此问题,只需在BGR值中传递Excel值即可。(或者如果使用Color.FromArgb(),则传入Color.FromArgb(B,G,R))
谢谢,我甚至编写了这个伪代码:series1.Format.Fill.ForeColor.RGB=int.Parse(Color.FromArgb(311115169).Name,System.Globalization.NumberStyles.allowehexspecifier);