Salute.
Nel codice di sotto, utilizzo la libreria NPOI per creare un file Excel.
In sintesi, creo un IWorkbook leggendo i dati da un datatable, formattando le celle.

Il codice recupera il formato originale delle celle e ne modifica alcuni formati per creare righe alternate chiaro-scure.

Il codice funziona. Il problema è che è lento, tanto da farmi pensare a codice non corretto.
Spero nel vostro aiuto.


codice:
Dim dt As System.Data.DataTable = msole.GetDataTable(gl.StringaConnessioneTest, "select * from campi ")
Dim workbook As IWorkbook = l.DataTableToWorkbook(dt)
Dim sheet As ISheet = workbook.GetSheetAt(0) 'sheet per indice

For i As Integer = 0 To dt.Rows.Count - 1
    Dim row As IRow = sheet.GetRow(i)
    For j As Integer = 0 To dt.Columns.Count - 1
        Dim cell As ICell = row.GetCell(j)
        If i = 0 Then
            'intestazione: aggiungo il bordo
            Dim hStyle As XSSFCellStyle = CType(cell.CellStyle, XSSFCellStyle)
            hStyle.SetBorderColor(Extensions.BorderSide.RIGHT, New XSSFColor(Color.LightGray)) : hStyle.BorderRight = BorderStyle.Thin
            hStyle.SetBorderColor(Extensions.BorderSide.TOP, New XSSFColor(Color.LightGray)) : hStyle.BorderTop = BorderStyle.Thin
            hStyle.SetBorderColor(Extensions.BorderSide.BOTTOM, New XSSFColor(Color.LightGray)) : hStyle.BorderBottom = BorderStyle.Thin

        Else
            'righe dati: righe alternate con bordo
            Dim dStyle0 As XSSFCellStyle = CType(CType(cell.CellStyle, XSSFCellStyle).Clone, XSSFCellStyle)
            Dim dStyle1 As XSSFCellStyle = CType(CType(cell.CellStyle, XSSFCellStyle).Clone, XSSFCellStyle)

            With dStyle0
                .SetFillForegroundColor(New XSSFColor(Color.White))

                .FillPattern = FillPattern.SolidForeground

                .SetBorderColor(Extensions.BorderSide.LEFT, New XSSFColor(Color.LightGray))
                .SetBorderColor(Extensions.BorderSide.RIGHT, New XSSFColor(Color.LightGray))
                .SetBorderColor(Extensions.BorderSide.TOP, New XSSFColor(Color.LightGray))
                .SetBorderColor(Extensions.BorderSide.BOTTOM, New XSSFColor(Color.LightGray))

                .BorderLeft = BorderStyle.Thin
                .BorderRight = BorderStyle.Thin
                .BorderTop = BorderStyle.Thin
                .BorderBottom = BorderStyle.Thin
            End With

            With dStyle1
                .SetFillForegroundColor(New XSSFColor(Color.AliceBlue))

                .FillPattern = FillPattern.SolidForeground

                .SetBorderColor(Extensions.BorderSide.LEFT, New XSSFColor(Color.LightGray))
                .SetBorderColor(Extensions.BorderSide.RIGHT, New XSSFColor(Color.LightGray))
                .SetBorderColor(Extensions.BorderSide.TOP, New XSSFColor(Color.LightGray))
                .SetBorderColor(Extensions.BorderSide.BOTTOM, New XSSFColor(Color.LightGray))

                .BorderLeft = BorderStyle.Thin
                .BorderRight = BorderStyle.Thin
                .BorderTop = BorderStyle.Thin
                .BorderBottom = BorderStyle.Thin
            End With

            If i Mod 2 = 0 Then
                cell.CellStyle = dStyle0
            Else
                cell.CellStyle = dStyle1
            End If

        End If

    Next
Next