2011-05-23 2532 views
2

我使用NPOI從Asp.Net輸出excel。我要大膽和正常樣式設置爲我的手機,但它正在爲幾個單元,而不是剩餘cell.Please對下面的例子看看:NPOI設置單元格樣式「HSSFFont.BOLDWEIGHT_BOLD」不起作用

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 

其實代碼工作正常,但我不知道特定的情況從哪裏和爲什麼它停止工作剩餘的幾行。它不適用於所有單元格,並且從該特定單元格,粗體和普通屬性停止在整個工作表(如工作表2和工作表3)上工作。

回答

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 
相關問題