Mod Extensiones: Optimizar y mejorar ExportToExcelG
-Ahora se puede usar en DataTables también -Se mejoró el estilo, quitando los bordes innecesarios a las tablas
This commit is contained in:
@@ -2516,7 +2516,7 @@ Namespace Extensiones
|
|||||||
Dim sw As New StringWriter()
|
Dim sw As New StringWriter()
|
||||||
Dim htw As New HtmlTextWriter(sw)
|
Dim htw As New HtmlTextWriter(sw)
|
||||||
Gv.RenderControl(htw)
|
Gv.RenderControl(htw)
|
||||||
GemBox.Spreadsheet.SpreadsheetInfo.SetLicense("ESWN-4QFD-26JF-1SZ8")
|
GemBox.Spreadsheet.SpreadsheetInfo.SetLicense(SerialGemBoxSpreadsheet)
|
||||||
|
|
||||||
Dim excel As GemBox.Spreadsheet.ExcelFile
|
Dim excel As GemBox.Spreadsheet.ExcelFile
|
||||||
Dim options = GemBox.Spreadsheet.LoadOptions.HtmlDefault
|
Dim options = GemBox.Spreadsheet.LoadOptions.HtmlDefault
|
||||||
@@ -2527,9 +2527,11 @@ Namespace Extensiones
|
|||||||
Dim TotalRowFooter As Integer = 2
|
Dim TotalRowFooter As Integer = 2
|
||||||
|
|
||||||
Dim worksheet = excel.Worksheets(0)
|
Dim worksheet = excel.Worksheets(0)
|
||||||
|
worksheet.Name = NombreArchivoXLSx
|
||||||
worksheet.Rows.InsertEmpty(0, TotalRowHeader)
|
worksheet.Rows.InsertEmpty(0, TotalRowHeader)
|
||||||
Dim celdasConTexto = worksheet.GetUsedCellRange(True)
|
Dim celdasConTexto = worksheet.GetUsedCellRange(True)
|
||||||
celdasConTexto.Style.Font.Name = "Calibri Light"
|
celdasConTexto.Style.Font.Name = "Calibri Light"
|
||||||
|
celdasConTexto.Style.Borders = Nothing
|
||||||
|
|
||||||
Dim RangoNombreEmpresa = worksheet.Cells.GetSubrangeAbsolute(1, celdasConTexto.FirstColumnIndex, 1, celdasConTexto.LastColumnIndex)
|
Dim RangoNombreEmpresa = worksheet.Cells.GetSubrangeAbsolute(1, celdasConTexto.FirstColumnIndex, 1, celdasConTexto.LastColumnIndex)
|
||||||
RangoNombreEmpresa.Merged = True
|
RangoNombreEmpresa.Merged = True
|
||||||
@@ -2539,7 +2541,6 @@ Namespace Extensiones
|
|||||||
RangoNombreEmpresa.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center
|
RangoNombreEmpresa.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center
|
||||||
RangoNombreEmpresa.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
RangoNombreEmpresa.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
||||||
|
|
||||||
|
|
||||||
Dim RangoFiltros = worksheet.Cells.GetSubrangeAbsolute(6, celdasConTexto.FirstColumnIndex, 6, celdasConTexto.LastColumnIndex)
|
Dim RangoFiltros = worksheet.Cells.GetSubrangeAbsolute(6, celdasConTexto.FirstColumnIndex, 6, celdasConTexto.LastColumnIndex)
|
||||||
RangoFiltros.Merged = True
|
RangoFiltros.Merged = True
|
||||||
RangoFiltros.Value = Filtros
|
RangoFiltros.Value = Filtros
|
||||||
@@ -2548,27 +2549,28 @@ Namespace Extensiones
|
|||||||
RangoFiltros.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Left
|
RangoFiltros.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Left
|
||||||
RangoFiltros.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
RangoFiltros.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
||||||
|
|
||||||
|
|
||||||
Dim RangoTitulo = worksheet.Cells.GetSubrangeAbsolute(3, celdasConTexto.FirstColumnIndex, 3, celdasConTexto.LastColumnIndex)
|
Dim RangoTitulo = worksheet.Cells.GetSubrangeAbsolute(3, celdasConTexto.FirstColumnIndex, 3, celdasConTexto.LastColumnIndex)
|
||||||
RangoTitulo.Merged = True
|
RangoTitulo.Merged = True
|
||||||
RangoTitulo.Value = Titulo
|
RangoTitulo.Value = Titulo
|
||||||
RangoTitulo.Style.Font.Size = 20 * 20
|
RangoTitulo.Style.Font.Size = 20 * 20
|
||||||
RangoTitulo.Style.Font.Name = "Calibri Light"
|
RangoTitulo.Style.Font.Name = "Calibri Light"
|
||||||
RangoTitulo.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center
|
RangoTitulo.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center
|
||||||
RangoTitulo.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
RangoTitulo.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
||||||
|
|
||||||
|
Dim RangoColTitulos = worksheet.Cells.GetSubrangeAbsolute(8, celdasConTexto.FirstColumnIndex, 8, celdasConTexto.LastColumnIndex)
|
||||||
|
RangoColTitulos.Style.Font.Size = 12 * 20
|
||||||
|
RangoColTitulos.Style.Font.Name = "Calibri"
|
||||||
|
RangoColTitulos.Style.Font.Weight = GemBox.Spreadsheet.ExcelFont.BoldWeight
|
||||||
|
RangoColTitulos.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center
|
||||||
|
RangoColTitulos.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
||||||
|
RangoColTitulos.Style.FillPattern.SetSolid(GemBox.Spreadsheet.SpreadsheetColor.FromArgb(75, 119, 190))
|
||||||
|
RangoColTitulos.Style.Font.Color = GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255)
|
||||||
|
|
||||||
For i = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex
|
For i = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex
|
||||||
worksheet.Rows(8).Cells(i).Style.Font.Size = 12 * 20
|
Try
|
||||||
worksheet.Rows(8).Cells(i).Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center
|
worksheet.Columns(i).AutoFit(0.95)
|
||||||
worksheet.Rows(8).Cells(i).Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
Catch ex As Exception
|
||||||
worksheet.Rows(8).Cells(i).Style.FillPattern.SetPattern(GemBox.Spreadsheet.FillPatternStyle.Solid, GemBox.Spreadsheet.SpreadsheetColor.FromArgb(75, 119, 190), GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255))
|
End Try
|
||||||
worksheet.Rows(8).Cells(i).Style.Font.Color = GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255)
|
|
||||||
If i > 0 Then
|
|
||||||
Try
|
|
||||||
worksheet.Columns(i).AutoFit(1)
|
|
||||||
Catch ex As Exception
|
|
||||||
End Try
|
|
||||||
End If
|
|
||||||
Next
|
Next
|
||||||
|
|
||||||
Dim IndexEndTable As Integer = Gv.Rows.Count + TotalRowHeader + TotalRowFooter
|
Dim IndexEndTable As Integer = Gv.Rows.Count + TotalRowHeader + TotalRowFooter
|
||||||
@@ -2579,10 +2581,10 @@ Namespace Extensiones
|
|||||||
worksheet.Rows(IndexEndTable).Cells(6).Value = "Fecha Impresión"
|
worksheet.Rows(IndexEndTable).Cells(6).Value = "Fecha Impresión"
|
||||||
worksheet.Rows(IndexEndTable + 1).Cells(6).Value = DateTime.Now.ToString("dd/MM/yyyy")
|
worksheet.Rows(IndexEndTable + 1).Cells(6).Value = DateTime.Now.ToString("dd/MM/yyyy")
|
||||||
|
|
||||||
Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", Usuario.Empresa.Ruta))
|
Dim Imagen As New System.IO.FileInfo($"{Usuario.Empresa.Ruta}/Logo.png")
|
||||||
|
|
||||||
If Imagen.Exists Then
|
If Imagen.Exists Then
|
||||||
Dim Ruta As String = String.Format("{0}/Logo.png", Usuario.Empresa.Ruta)
|
Dim Ruta As String = $"{Usuario.Empresa.Ruta}/Logo.png"
|
||||||
Using sr As New StreamReader(Ruta)
|
Using sr As New StreamReader(Ruta)
|
||||||
Dim ms As New MemoryStream()
|
Dim ms As New MemoryStream()
|
||||||
sr.BaseStream.CopyTo(ms)
|
sr.BaseStream.CopyTo(ms)
|
||||||
@@ -2597,6 +2599,95 @@ Namespace Extensiones
|
|||||||
excel.Save(HttpContext.Current.Response, $"{NombreArchivoXLSx}.xlsx")
|
excel.Save(HttpContext.Current.Response, $"{NombreArchivoXLSx}.xlsx")
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
<Runtime.CompilerServices.Extension()>
|
||||||
|
Public Sub ExportToExcelG(Dt As DataTable, NombreArchivoXLSx As String, Optional Titulo As String = "Reporte", Optional Usuario As Usuario = Nothing, Optional Filtros As String = "", Optional AlturaImagen As Double = 100, Optional AnchoImagen As Double = 100)
|
||||||
|
GemBox.Spreadsheet.SpreadsheetInfo.SetLicense(SerialGemBoxSpreadsheet)
|
||||||
|
If Dt.TableName Is Nothing Then Dt.TableName = NombreArchivoXLSx
|
||||||
|
|
||||||
|
Dim excel As New GemBox.Spreadsheet.ExcelFile
|
||||||
|
Dim item = excel.Worksheets.Add(Dt.TableName)
|
||||||
|
|
||||||
|
item.InsertDataTable(Dt, New InsertDataTableOptions() With
|
||||||
|
{
|
||||||
|
.ColumnHeaders = True,
|
||||||
|
.StartRow = 0,
|
||||||
|
.StartColumn = 0
|
||||||
|
})
|
||||||
|
|
||||||
|
If Usuario IsNot Nothing Then
|
||||||
|
Dim TotalRowHeader As Integer = 8
|
||||||
|
Dim TotalRowFooter As Integer = 2
|
||||||
|
|
||||||
|
Dim worksheet = excel.Worksheets(0)
|
||||||
|
worksheet.Rows.InsertEmpty(0, TotalRowHeader)
|
||||||
|
Dim celdasConTexto = worksheet.GetUsedCellRange(True)
|
||||||
|
celdasConTexto.Style.Font.Name = "Calibri Light"
|
||||||
|
celdasConTexto.Style.Borders = Nothing
|
||||||
|
|
||||||
|
Dim RangoNombreEmpresa = worksheet.Cells.GetSubrangeAbsolute(1, celdasConTexto.FirstColumnIndex, 1, celdasConTexto.LastColumnIndex)
|
||||||
|
RangoNombreEmpresa.Merged = True
|
||||||
|
RangoNombreEmpresa.Value = Usuario.Empresa.Empresa
|
||||||
|
RangoNombreEmpresa.Style.Font.Size = 18 * 20
|
||||||
|
RangoNombreEmpresa.Style.Font.Name = "Calibri Light"
|
||||||
|
RangoNombreEmpresa.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center
|
||||||
|
RangoNombreEmpresa.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
||||||
|
|
||||||
|
Dim RangoFiltros = worksheet.Cells.GetSubrangeAbsolute(6, celdasConTexto.FirstColumnIndex, 6, celdasConTexto.LastColumnIndex)
|
||||||
|
RangoFiltros.Merged = True
|
||||||
|
RangoFiltros.Value = Filtros
|
||||||
|
RangoFiltros.Style.Font.Size = 15 * 20
|
||||||
|
RangoFiltros.Style.Font.Name = "Calibri Light"
|
||||||
|
RangoFiltros.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Left
|
||||||
|
RangoFiltros.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
||||||
|
|
||||||
|
Dim RangoTitulo = worksheet.Cells.GetSubrangeAbsolute(3, celdasConTexto.FirstColumnIndex, 3, celdasConTexto.LastColumnIndex)
|
||||||
|
RangoTitulo.Merged = True
|
||||||
|
RangoTitulo.Value = Titulo
|
||||||
|
RangoTitulo.Style.Font.Size = 20 * 20
|
||||||
|
RangoTitulo.Style.Font.Name = "Calibri Light"
|
||||||
|
RangoTitulo.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center
|
||||||
|
RangoTitulo.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
||||||
|
|
||||||
|
Dim RangoColTitulos = worksheet.Cells.GetSubrangeAbsolute(8, celdasConTexto.FirstColumnIndex, 8, celdasConTexto.LastColumnIndex)
|
||||||
|
RangoColTitulos.Style.Font.Size = 12 * 20
|
||||||
|
RangoColTitulos.Style.Font.Name = "Calibri"
|
||||||
|
RangoColTitulos.Style.Font.Weight = GemBox.Spreadsheet.ExcelFont.BoldWeight
|
||||||
|
RangoColTitulos.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center
|
||||||
|
RangoColTitulos.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
|
||||||
|
RangoColTitulos.Style.FillPattern.SetSolid(GemBox.Spreadsheet.SpreadsheetColor.FromArgb(75, 119, 190))
|
||||||
|
RangoColTitulos.Style.Font.Color = GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255)
|
||||||
|
|
||||||
|
For i = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex
|
||||||
|
Try
|
||||||
|
worksheet.Columns(i).AutoFit(0.95)
|
||||||
|
Catch ex As Exception
|
||||||
|
End Try
|
||||||
|
Next
|
||||||
|
|
||||||
|
Dim IndexEndTable As Integer = Dt.Rows.Count + TotalRowHeader + TotalRowFooter
|
||||||
|
|
||||||
|
worksheet.Rows(IndexEndTable).Cells(2).Value = "Usuario Imprimió"
|
||||||
|
worksheet.Rows(IndexEndTable + 1).Cells(2).Value = Usuario.Nombre
|
||||||
|
|
||||||
|
worksheet.Rows(IndexEndTable).Cells(6).Value = "Fecha Impresión"
|
||||||
|
worksheet.Rows(IndexEndTable + 1).Cells(6).Value = DateTime.Now.ToString("dd/MM/yyyy")
|
||||||
|
|
||||||
|
Dim Imagen As New System.IO.FileInfo($"{Usuario.Empresa.Ruta}/Logo.png")
|
||||||
|
|
||||||
|
If Imagen.Exists Then
|
||||||
|
Dim Ruta As String = $"{Usuario.Empresa.Ruta}/Logo.png"
|
||||||
|
Using sr As New StreamReader(Ruta)
|
||||||
|
Dim ms As New MemoryStream()
|
||||||
|
sr.BaseStream.CopyTo(ms)
|
||||||
|
worksheet.Pictures.Add(ms, ExcelPictureFormat.Png, "A1", AnchoImagen, AlturaImagen, LengthUnit.Pixel)
|
||||||
|
End Using
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
excel.Save(HttpContext.Current.Response, $"{NombreArchivoXLSx}.xlsx")
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
Private Sub RecursivoLimpiaControlesExcel(Controls As ControlCollection)
|
Private Sub RecursivoLimpiaControlesExcel(Controls As ControlCollection)
|
||||||
For Each c As Control In Controls
|
For Each c As Control In Controls
|
||||||
|
|||||||
Reference in New Issue
Block a user