【问题标题】:How to set excel cell background color with System color in NPOI如何在 NPOI 中使用系统颜色设置 excel 单元格背景颜色
【发布时间】: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 颜色索引?

我试过了: 我写了一个函数来转换(从ColorHSSFColor 索引),但不确定要写多少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。

标签: c# .net npoi hssf


【解决方案1】:

你可以用这个:

var color = new XSSFColor(fooObject.StatusColor);
statusStyle.FillForegroundColor = color.Indexed;

【讨论】:

    猜你喜欢
    • 2017-03-26
    • 1970-01-01
    • 2017-05-02
    • 2011-02-06
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2011-10-10
    • 2019-10-21
    相关资源
    最近更新 更多