206-05-22 V1.3.11 tamaño de columnas automatico en ienumerableaexcel

This commit is contained in:
2026-05-22 19:25:09 +02:00
parent 93a2a4936e
commit f75f7a9022
2 changed files with 36 additions and 11 deletions

View File

@@ -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
Using ms As New MemoryStream
wb.SaveAs(ms)
ms.Position = 0
Return ms.ToArray
Return ms.ToArray()
End Using
End Function
End Class
End Namespace

View File

@@ -15,11 +15,12 @@
<RootNamespace>tsWPFCore</RootNamespace>
<PackageId>tsWPFCore</PackageId>
<PackageTags>net8.0-windows, libreria</PackageTags>
<Version>1.3.10</Version>
<Version>1.3.11</Version>
<Authors>Manuel</Authors>
<Company>Tecnosis S.A</Company>
<Description>Utilidades para aplicaciones WPF.</Description>
<PackageReleaseNotes>
- 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