簡體   English   中英

如何在NPOI中使用系統顏色設置Excel單元格背景顏色

[英]How to set excel cell background color with System color in NPOI

我有一個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索引),但是不確定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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM