c# - 如何在 NPOI 中使用系统颜色设置 excel 单元格背景颜色
问题描述
我有一个在多个位置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;
}
解决方案
你可以使用这个:
var color = new XSSFColor(fooObject.StatusColor);
statusStyle.FillForegroundColor = color.Indexed;
推荐阅读
- java - 执行 MockMvc :在 post api 上执行 mockMvc 时出错
- c# - 带有连字符图标的 WPF 和 FontAwesome 问题
- python - 语句 break 没有打破我在 python 中的 while 循环
- django-models - 在 Django Updateview 中更新字典值
- python - 如何在 x 轴上绘制时间?
- java - Java小程序计算某个地方的KwH Used、Electric Bill、System Charges和Total Bill。(电费系统)
- flutter - 在 Flutter 中将 RadialGradient 中心定位在绝对位置(以像素为单位)
- c++ - ZLib 1.2.11 - 创建二进制文件 - Win10 - Visual Studio 2019 - c++
- html - 我如何等到对象存在才能加载 html
- python-3.x - 应用层回复包