问题描述
|
我正在使用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