NPOI设置的单元格样式“ HSSFFont.BOLDWEIGHT_BOLD”不起作用

问题描述

| 我正在使用NPOI从Asp.Net输出excel。我想为单元格设置粗体和普通的样式,但是它只适用于少数单元格而不适用于其余单元格。请查看以下示例:
Dim hssfworkbook As New hssfWorkbook()
    Dim sheetone As hssfSheet = hssfworkbook.CreateSheet(\"Sheet1\")
    hssfworkbook.CreateSheet(\"Sheet2\")
    hssfworkbook.CreateSheet(\"Sheet3\")

    Dim cellStyle As hssfCellStyle = hssfworkbook.CreateCellStyle
    cellStyle.Alignment = hssfCellStyle.ALIGN_CENTER

    Dim font As hssfFont = _hssfworkbook.CreateFont()
    font.Boldweight = hssfFont.BOLDWEIGHT_BOLD
    cellStyle.SetFont(font)

    For i = 0 To 9 Step 1
        \'I want to add cell style to these cells
        If i Mod 2 = 0 Then 
                Sheet1.CreateRow(i).CreateCell(1).SetCellValue(i)
                font.Boldweight = hssfFont.BOLDWEIGHT_BOLD
                cellStyle.SetFont(font)
                Sheet1.GetRow(i).GetCell(1).CellStyle = cellStyle
        Else
                Sheet1.CreateRow(i).CreateCell(1).SetCellValue(i)
                font.Boldweight = hssfFont.BOLDWEIGHT_norMAL
                cellStyle.SetFont(font)
                Sheet1.GetRow(i).GetCell(1).CellStyle = cellStyle
        End If
   Next
实际上,代码工作正常,但是我不知道从何而来的特殊情况以及为什么它停止为剩余的几行工作。它不适用于所有单元格,并且从该特定单元格开始,粗体和正常属性停止在整个工作表(如sheet2和sheet3)上工作。     

解决方法

您必须使用多种样式,因为样式的更改会影响工作表中引用样式的所有地方。
Dim hssfworkbook As New HSSFWorkbook()
Dim sheetOne As HSSFSheet = hssfworkbook.CreateSheet(\"Sheet1\")
hssfworkbook.CreateSheet(\"Sheet2\")
hssfworkbook.CreateSheet(\"Sheet3\")    

Dim BoldFont As HSSFFont = hssfworkbook.CreateFont()
    BoldFont.Boldweight = HSSFFont.BOLDWEIGHT_BOLD
Dim NormalFont As HSSFFont = hssfworkbook.CreateFont()
    NormalFont.Boldweight = HSSFFont.BOLDWEIGHT_NORMAL
Dim cellStyleBold As HSSFCellStyle = hssfworkbook.CreateCellStyle()
With cellStyleBold
    .setFont(BoldFont)
    .Alignment = HSSFCellStyle.ALIGN_CENTER
End With
Dim cellStyleNormal As HSSFCellStyle = hssfworkbook.CreateCellStyle()
With cellStyleNormal
    .setFont(NormalFont)
    .Alignment = HSSFCellStyle.ALIGN_CENTER
End With

For i - 0 To 9 Step 1
    If i Mod 2 = 0 Then 
        With Sheet1.CreateRow(i).CreateCell(1)
             .SetCellValue(i)
             .cellStyle = cellStyleBold
        End With
    Else
        With Sheet1.CreateRow(i).CreateCell(1)
            .SetCellValue(i)
            .cellStyle = cellStyleNormal
        End With
    End If
Next
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...