NPOI с VB, как установить формат данных стиля ячейки в DATE - PullRequest
0 голосов
/ 19 марта 2019

Я использую VB и NPOI для записи данных DATE в строку Excel.

Я пытаюсь использовать следующий код, чтобы установить для формата данных ячейки значение "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 голосов
/ 20 марта 2019

Из приведенного выше примера кода вы создаете новый экземпляр строки каждый раз, когда создаете новую ячейку для каждого столбца с данными.

Вы должны создать строку перед итерацией столбцов, чтобы заполнить данные для каждой ячейки в этой новой строке.

   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

Вышеуказанное исправит возникшую ошибку.

0 голосов
/ 19 марта 2019

Вы применяете cellStyle к ячейке с отрицательным числом

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

Это дает DTforEXCELdata.Columns.Count значение 0

Просмотрите код, который его производит, и посмотрите, сможете ли вы выяснить, почему

...