NPOI设置单元格样式“HSSFFont.BOLDWEIGHT_BOLD”无效

时间:2011-05-23 07:31:19

标签: asp.net npoi

我正在使用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。

1 个答案:

答案 0 :(得分:4)

您必须使用多种样式,因为对样式的更改会影响工作表中引用样式的所有位置。

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
相关问题