无法设置FillBackgroundColor

时间:2014-12-05 20:06:02

标签: c# npoi

我在NPOI 2.0.6.0项目中使用C#,我在改变样式方面遇到了困难。 虽然我可以影响字体和单元格边框,但我无法更改背景颜色。

private void buildSheet(HSSFWorkbook wb, DataTable data, string sheetName)
{
    var cHelp = wb.GetCreationHelper();
    var sheet = wb.CreateSheet(sheetName);

    HSSFFont hFont = (HSSFFont)wb.CreateFont();

    hFont.Boldweight = (short)FontBoldWeight.Bold;
    hFont.Color = HSSFColor.White.Index;
    hFont.FontHeightInPoints = 18;

    HSSFCellStyle hStyle = (HSSFCellStyle)wb.CreateCellStyle();
    hStyle.SetFont(hFont);
    hStyle.BorderBottom = BorderStyle.Medium;
    hStyle.FillBackgroundColor = HSSFColor.Black.Index;

    IRow headerRow = sheet.CreateRow(1);


    int cellCount = 1;
    foreach (string str in colHeaders)
    {
        HSSFCell cell = (HSSFCell)headerRow.CreateCell(cellCount);
        cell.SetCellValue(cHelp.CreateRichTextString((str)));
        cell.CellStyle = hStyle;

        cellCount += 1;
    }

    int rowCount = 2;
    foreach (DataRow dr in data.Rows)
    {
        var row = sheet.CreateRow(rowCount);
        for (int i = 1; i < data.Columns.Count + 1; i++)
        {
            row.CreateCell(i).SetCellValue(cHelp.CreateRichTextString((dr[i - 1]).ToString()));
        }
        rowCount += 1;
    }
}

附加调试器后,我注意到hStyle.FillBackgroundColor永远不会从0x0040改变,尽管黑色索引是8。

基本上问题是:

  • 为什么HSSFCellStyle.FillBackgroundColor无法修改?

1 个答案:

答案 0 :(得分:14)

如果不指定FillBackgroundcolor,则无法应用FillPattern

        hStyle = (HSSFCellStyle)workBook.CreateCellStyle();
        hStyle.SetFont(xFont);
        hStyle.BorderBottom = BorderStyle.Medium;
        hStyle.FillForegroundColor = IndexedColors.Black.Index;
        hStyle.FillPattern = FillPattern.SolidForeground;