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