Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Word中设置图表系列颜色_C#_Office Interop_System.drawing_Word Automation - Fatal编程技术网

C# 在Word中设置图表系列颜色

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结构找到一些方法来实现这一点,但徒劳无

我想通过使用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 = 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);