J'utilise Epplus pour exporter des données dans vb.net vers un fichier .xlsx, mais que puis-je faire lorsque les lignes dépassent la limite de la feuille de calcul en cours? Comment puis-je arrêter le processus d'exportation pour créer une nouvelle feuille?comment diviser des lignes dans une nouvelle feuille de calcul lorsque je dépasse la limite d'une feuille de calcul?
Ceci est mon code pour l'exportation:
Fonction privée GeneraExcel (ByVal NombreArchivo As String) As Boolean
Dim file As New System.IO.FileInfo(NombreArchivo)
Dim Paquete As New OfficeOpenXml.ExcelPackage(file)
Dim Hoja As OfficeOpenXml.ExcelWorksheet
Dim columna As Infragistics.Win.UltraWinGrid.UltraGridColumn
'numero de columnas de la grilla
Dim numColumnas As Integer = -1
For Each columna In grdDatos.Rows.Band.Columns
If columna.Hidden = False Then
numColumnas = numColumnas + 1
End If
Next
Hoja = Paquete.Workbook.Worksheets.Add(Globales.TITULO_APLICACION)
'convirtiendo grilla a datatable
Dim dtDatos As New DataTable
dtDatos = TryCast(grdDatos.DataSource, DataTable)
For i As Integer = 0 To numColumnas
dtDatos.Columns(i).ColumnName = grdDatos.Rows.Band.Columns(i).Header.Caption
Next
'imprimiendo en excel
Try
'Insertando título
Hoja.SelectedRange(4, 2, 4, numColumnas + 1).Merge = True
Hoja.Cells("B4").Value = "CONSULTA DE IMPORTES"
Hoja.Cells("B4").Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center
Hoja.Cells("B4").Style.Font.Bold = True
'Ingresando data con cabeceras
Hoja.Cells("B6").LoadFromDataTable(dtDatos, True)
'Colocando formatos
Dim colNumber As Integer = 1
For Each col As Data.DataColumn In dtDatos.Columns
colNumber += 1
If (col.DataType) Is GetType(DateTime) Then
Hoja.Column(colNumber).Style.Numberformat.Format = "dd/mm/yyyy"
End If
Next
Hoja.Cells(Hoja.Dimension.Address).AutoFitColumns()
Hoja.Row(6).Style.Font.Bold = True
Hoja.Cells(Hoja.Dimension.Address).Style.Font.Name = "Arial"
Hoja.Cells(Hoja.Dimension.Address).Style.Font.Size = 8
'Guardando archivo
Paquete.SaveAs(file)
Return True
Catch ex As Exception
Return False
End Try
End Function
Je suppose que vous devrez manuellement par votre boucle DataTable, au lieu d'utiliser LoadFromDataTable, qui vous permettra de commencer une nouvelle feuille de calcul basée sur le nombre de lignes écrites. – Mark