我有一个Foo
类的对象,其属性StatusColor
在多个位置使用。
现在,我必须使用NPOI生成Excel文件,其中Status Color
列应与对象具有相同的颜色。
我不知道如何将System.Drawing.Color
设置为CellStyle颜色,请帮忙。
我想要类似的东西
class Foo{
//Properties..
System.Drawing.Color StatusColor {get;set;}
}
...
//Creating Status Style
var statusStyle = workbook.CreateCellStyle();
statusStyle.FillForegroundColor = fooObject.StatusColor; //Of course, it won't work.
//Is there way to convert from System.Color to HSSFColor?
statusStyle.FillPattern = FillPattern.SolidForeground;
...
//Set Style
excelCell.CellStyle = style;
简短输入:
如何将System.Drawing.Color
转换为HSSFColor
颜色索引?
我尝试过:
我已经编写了一个转换函数(从Color
到HSSFColor
索引),但是不确定要写多少个if-else
。
public static short ToHSSFColorIndex(Color color)
{
if (Color.Green.ToArgb().Equals(color.ToArgb()))
return HSSFColor.Green.Index;
else if (Color.Green.ToArgb().Equals(color.ToArgb()))
return HSSFColor.LightGreen.Index;
else if (Color.Red.ToArgb().Equals(color.ToArgb()))
return HSSFColor.Red.Index;
else if (Color.DarkRed.ToArgb().Equals(color.ToArgb()))
return HSSFColor.DarkRed.Index;
else if (Color.Gray.ToArgb().Equals(color.ToArgb()))
return HSSFColor.Grey50Percent.Index;
else if (Color.Blue.ToArgb().Equals(color.ToArgb()))
return HSSFColor.Blue.Index;
else if (Color.Yellow.ToArgb().Equals(color.ToArgb()))
return HSSFColor.Yellow.Index;
else if (Color.YellowGreen.ToArgb().Equals(color.ToArgb()))
return HSSFColor.LightYellow.Index;
else if (Color.White.ToArgb().Equals(color.ToArgb()))
return HSSFColor.White.Index;
else
return HSSFColor.COLOR_NORMAL;
}
答案 0 :(得分:0)
您可以使用此:
var color = new XSSFColor(fooObject.StatusColor);
statusStyle.FillForegroundColor = color.Indexed;