NPOI设置背景颜色不起作用

时间:2015-07-01 11:15:16

标签: c# .net npoi

我需要设置和删除行的背景颜色。为什么当我将样式设置为行时它不起作用 - 仍然没有行的背景颜色。我试图设置单个单元格的CellStyle属性并使用HSSFStyle。结果是一样的 - 没有背景颜色。这是代码:

        XSSFCellStyle style = (XSSFCellStyle)_myBook.CreateCellStyle();
        // Define cell style according to input color parameter
        XSSFColor colorToFill;
        switch (color)
        {
            default:
                colorToFill = new XSSFColor(Color.Gray);
                break;
        }
        style.SetFillBackgroundColor(colorToFill);
        for (int i = From; i <= To; i++)
        {
            var row = GetCreateRow(i);
            row.RowStyle = style;
        }

P.S。文档以XSSF格式打开

2 个答案:

答案 0 :(得分:20)

啊,我们每个人都有部分答案! (转换为XSSFCellStyle是我所缺少的,因为ICellStyle没有SetFill方法所以我无法获得自定义颜色,只有一个索引颜色...)

您需要做两件事:

  1. 调用SetFillForegroundColor,而不是SetFillBackgroundColor。
  2. 设置style.FillPattern = FillPattern.SolidForeground;
  3. 显然,填写Excel是双色的,所以当你想要更改填充时,你必须设置一个模式,因为默认是一个没有填充的单元格,这意味着没有FillPattern。 SolidForeground是基本填充图案,这意味着您必须设置填充的前景色,而不是填充的背景色。有点反直觉,但是&#34;填充&#34;指的是&#34;单元格的背景颜色&#34;,所以你可以把它想象成&#34; SetBackgroundForegroundColor&#34; /&#34; SetBackgroundBackgroundColor&#34;

答案 1 :(得分:0)

getchar()
<块引用>

块引用 对于列标题

Dim conn As New SqlConnection("xxxxxxx")
conn.Open()

Dim a As SqlDataAdapter = New SqlDataAdapter(XXXXXX, conn)
Dim dt As DataTable = New DataTable()
a.Fill(dt)
conn.Close()
conn.Dispose()

Using fs = New FileStream("C:\123.xlsx", FileMode.Append, FileAccess.Write)

            Dim workbook As IWorkbook = New XSSFWorkbook()
            Dim excelSheet As ISheet = workbook.CreateSheet("Sheet1")
            Dim columns As List(Of String) = New List(Of String)()

            Dim styleOrange As ICellStyle = workbook.CreateCellStyle    
            Dim row As IRow = excelSheet.CreateRow(0)    
            Dim columnIndex As Integer = 0
<块引用>

Blockquote '用于记录和行以填充 excel

            For Each column As Data.DataColumn In dt.Columns
                columns.Add(column.ColumnName)
                row.CreateCell(columnIndex).SetCellValue(column.ColumnName)
                columnIndex += 1
            Next