【发布时间】:2019-07-02 06:57:20
【问题描述】:
我有一个 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;
}
【问题讨论】:
-
OP 和投票者可能需要更新 How to Ask
-
感谢@piedpiper,但我找不到代码中是否使用了 System.Color。能否请您提供您希望我参考的行号?
-
什么是
SystemColor?到目前为止,您尝试过什么? -
嗨@jean-francois-t,对不起,我的意思是 System.Drawing.Color。