diff --git a/Utilidades/Utilidades.vb b/Utilidades/Utilidades.vb
index 2eec5e6..77f4826 100644
--- a/Utilidades/Utilidades.vb
+++ b/Utilidades/Utilidades.vb
@@ -183,36 +183,60 @@ Namespace Utilidades
Public Shared Sub IEnumerableAExcel(Of t)(Datos As IEnumerable(Of t), Fichero As String)
Dim wb As New ClosedXML.Excel.XLWorkbook
Dim dt = tsUtilidades.Extensiones.IEnumerableExtensions.CopyToDataTable(Of t)(Datos)
- wb.AddWorksheet(dt)
+ Dim ws = wb.AddWorksheet(dt)
+ ws.Columns().AdjustToContents()
wb.SaveAs(Fichero)
End Sub
Public Shared Sub IEnumerableAExcel(Of t)(Datos As List(Of t), Fichero As String)
Dim wb As New ClosedXML.Excel.XLWorkbook
Dim dt = tsUtilidades.Extensiones.IEnumerableExtensions.CopyToDataTable(Of t)(Datos)
- wb.AddWorksheet(dt)
+ Dim ws = wb.AddWorksheet(dt)
+ ws.Columns().AdjustToContents()
wb.SaveAs(Fichero)
End Sub
Public Shared Function IEnumerableAExcel(Of t)(Datos As List(Of t)) As Byte()
Dim wb As New ClosedXML.Excel.XLWorkbook
Dim dt = tsUtilidades.Extensiones.IEnumerableExtensions.CopyToDataTable(Of t)(Datos)
- wb.AddWorksheet(dt)
+ Dim ws = wb.AddWorksheet(dt)
+ ws.Columns().AdjustToContents()
Dim ms As New MemoryStream
wb.SaveAs(ms)
ms.Position = 0
Return ms.ToArray
End Function
- Public Shared Function ListaIEnumerableAExcel(Of t)(Datos As List(Of List(Of t)), NombreTablas As List(Of String)) As Byte()
+ Public Shared Function ListaIEnumerableAExcel(Of T)(Datos As List(Of List(Of T)), NombreTablas As List(Of String)) As Byte()
+ If Datos Is Nothing OrElse NombreTablas Is Nothing Then
+ Throw New ArgumentNullException("Los parámetros no pueden ser Nothing.")
+ End If
+
+ If Datos.Count <> NombreTablas.Count Then
+ Throw New ArgumentException("La cantidad de listas y nombres de tablas no coincide.")
+ End If
+
Dim wb As New ClosedXML.Excel.XLWorkbook
+
For i = 0 To Datos.Count - 1
Dim tabla = Datos(i)
- Dim dt = tsUtilidades.Extensiones.IEnumerableExtensions.CopyToDataTable(Of t)(tabla)
- wb.AddWorksheet(dt, NombreTablas(i))
+
+ ' Evitar error si la lista está vacía
+ If tabla Is Nothing OrElse tabla.Count = 0 Then
+ Dim wsVacio = wb.AddWorksheet(NombreTablas(i))
+ Continue For
+ End If
+
+ Dim dt = tsUtilidades.Extensiones.IEnumerableExtensions.CopyToDataTable(Of T)(tabla)
+ Dim ws = wb.AddWorksheet(dt, NombreTablas(i))
+
+ ' Autoajuste de columnas
+ ws.Columns().AdjustToContents()
Next
- Dim ms As New MemoryStream
- wb.SaveAs(ms)
- ms.Position = 0
- Return ms.ToArray
+
+ Using ms As New MemoryStream
+ wb.SaveAs(ms)
+ Return ms.ToArray()
+ End Using
End Function
+
End Class
End Namespace
\ No newline at end of file
diff --git a/tsWPFCore.vbproj b/tsWPFCore.vbproj
index fcfa8b7..2576aef 100644
--- a/tsWPFCore.vbproj
+++ b/tsWPFCore.vbproj
@@ -15,11 +15,12 @@
tsWPFCore
tsWPFCore
net8.0-windows, libreria
- 1.3.10
+ 1.3.11
Manuel
Tecnosis S.A
Utilidades para aplicaciones WPF.
+ - 2026-05-22 V1.3.11 tamaño de columnas automatico en ienumerableaexcel
- 2026-03-12 V1.3.10 Se lanza el evento campoactualizado si se ha lanzado con FuerzaValidarControl
- 2026-01-19 V1.3.9 Se Corrige hint de previsualizar
- 2025-10-20 V1.3.8 Se añade botón de previsualizar