[英]How to Get the font color of an Excel Cell in c#
好的,所以我正在尝试获取单元格的字体颜色,因为程序需要根据单元格中的字体颜色做不同的事情,所以我制作了一个测试文件
我试着像这样访问它:
Range thrange = ws.UsedRange.Columns["A:A", Type.Missing].Rows;
foreach (Range r in thrange)
{
Style sy = r.Style;
Font font = sy.Font;
ColorFormat color = (ColorFormat)font.Color;
Console.WriteLine(" "+r.Value+" " + color.RGB);
}
我得到Can not convert type 'double' to 'Microsoft.Office.Interop.Excel.ColorFormat'
我看到有人说你用绘图 object 设置颜色所以我尝试将最后两行更改为:
Color color =(System.Drawing.Color)font.Color;
Console.WriteLine(" "+r.Value+" " + color.ToArgb());
但这也不起作用Can not convert type 'double' to 'System.Drawing.Color'
所以我想我会看看这个 double 是什么,然后将字体设置为已知的 rgb 值并计算出如何将我得到的数字转换回那个数字。 但这也没有用。 作为 while Console.WriteLine(" "+r.Value+" "+r.style.font.color);
没有抛出错误它仍然没有给我任何有用的东西:
cyan 0
pink 0
blue 0
red 0
orange 0
purple 0
我想也许r.style.font.colorindex
但这只是给了我一个 1 而不是 0 我正在寻找类似的东西
blue 0000ff
red ff0000
由于项目所有者制定的规则,我不能使用第三方库。
那么如何得到实际的颜色值呢?
使用Range
的Font
属性而不是其Style
的属性。 然后使用ColorTranslator
class 将 double value
从 Office 转换为 .net Color
。
foreach (Microsoft.Office.Interop.Excel.Range r in thrange)
{
// Get Color from Font from Range directly
int oleColor = Convert.ToInt32(r.Font.Color);
// Convert to C# Color type
System.Drawing.Color c = System.Drawing.ColorTranslator.FromOle(oleColor);
// Output
Console.WriteLine(r.Value + " " + c.ToString());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.