NPOI与VB如何将单元格样式数据格式设置为DATE

时间:2019-03-19 17:05:28

标签: excel vb.net npoi

我正在使用VB和NPOI将DATE数据写入Excel ROW。

我正在尝试使用以下代码将单元格的数据格式设置为“ mm-dd-yy”,但是在设置cell.cellstyle时,我总是出现索引超出范围的错误。

有许多工作代码的C示例,但是我正在VB中尝试。

        Dim CELLfont as HSSFFont = XLworkbook.CreateFont 
            CELLfont.FontName = "Arial"
            CELLfont.IsBold = True 

        Dim CELLstyle As HSSFCellStyle = XLworkbook.CreateCellStyle 

        With CELLstyle
                .BorderRight = BorderStyle.Double  
                .SetFont(CELLfont)  
                .DataFormat = XLworkbook.CreateDataFormat().GetFormat( "mm-dd-yy" )
        End With


        For C As Integer = 0 to DTforEXCELdata.Columns.Count - 1
             XLrow = XLsheet.CreateRow(XLrowCOUNTER)

             XLrow.CreateCell(C)
             XLrow.Cells(C).CellStyle = CELLstyle '**Error index out of range is here**
             XLrow.Cells(C).SetCellValue(DATEvalue)
        Next 

2 个答案:

答案 0 :(得分:0)

您正在将cellStyle应用于负数单元格

For C As Integer = 0 to DTforEXCELdata.Columns.Count - 1

这给DTforEXCELdata.Columns.Count的值为0

逐步查看产生它的代码,看看是否可以找到原因

答案 1 :(得分:0)

根据上面给出的示例代码,每次为每个数据表列创建新的单元格时,您都会创建一个新的行实例。

您应该在迭代列以填充该新行中每个单元格的数据之前创建该行。

   XLrow = XLsheet.CreateRow(XLrowCOUNTER) ' <-- to here

   For C As Integer = 0 to DTforEXCELdata.Columns.Count - 1
         'XLrow = XLsheet.CreateRow(XLrowCOUNTER) ' <-- move this code
         XLrow.CreateCell(C)
         XLrow.Cells(C).CellStyle = CELLstyle '**Error index out of range is here**
         XLrow.Cells(C).SetCellValue(DATEvalue)
   Next

以上内容将解决您遇到的错误。