Option Explicit On Option Strict On Imports Extensiones Imports System.Data Imports System.IO Imports GemBox.Spreadsheet Partial Class Ventas_RepComisionesServec Inherits ClsPaginas Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then DdlSubProyecto.DataSource = GlobalDTSubProyectos(UsuarioActual.CveEmpresa) DdlSubProyecto.DataBind() InicializaValores() End If End Sub #Region " INICIALIZA VALORES " Private Sub InicializaValores() txtFechaI.Text = FirstDayOfMonth(NowADS()).ToShortDateString txtFechaF.Text = NowADS().LastDayOfMonth.ToShortDateString DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa) DdlVendedor.DataBind() End Sub #End Region Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click CargaDatos() UPDatos.Update() End Sub Private Sub CargaDatos() LnkExportar.Visible = False Dim FechaI = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim().ToDate, MinFecha) Dim FechaF = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim().ToDate, MaxFecha) Dim ObjVentas As New ClsVentas() If ObjVentas.GetRepComisionesServec(DdlVendedor.SelectedValue.ToEntero, FechaI, FechaF, DdlSubProyecto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then GvDatos.DataSource = ObjVentas.DtResultados If ObjVentas.DtResultados.Rows.Count > 0 Then LnkExportar.Visible = True End If Else GvDatos.DataSource = Nothing End If ObjVentas.Dispose() GvDatos.DataBind() UpAcciones.Update() UPDatos.Update() End Sub Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Select Case e.Row.DBCampo("TipoFila").ToString.ToEntero() Case 1 e.Row.CssClass = "Totales" Case Else e.Row.CssClass = "Texto" End Select e.Row.FCHyperLink("HLVendedor").NavigateUrl = String.Format("/Ventas/RepComisionesServecDetalle.aspx?CveVendedor={0}&CveSubProyecto={1}&FechaI={2:dd/MM/yyy}&FechaF={3:dd/MM/yyy}", e.Row.DBCampo("CveVendedor"), DdlSubProyecto.SelectedValue, If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim().ToDate, MinFecha), If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim().ToDate, MaxFecha)) End If End Sub Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control) End Sub Protected Sub LnkExportar_Click(sender As Object, e As EventArgs) Dim StrFiltro As New StringBuilder StrFiltro.AppendFormat(" Vendedor: {0}, ", DdlVendedor.SelectedItem.Text) StrFiltro.AppendFormat(" Sucursal: {0}, ", DdlSubProyecto.SelectedItem.Text) StrFiltro.AppendFormat(" Fecha Inicio: {0}, ", txtFechaI.Text) StrFiltro.AppendFormat(" Fecha Fin: {0}", txtFechaF.Text) ExportToExcelG(GvDatos, $"ReporteComisiones{NowADS().ToString("yyyyMMddhhmmss")}.xlsx", "", UsuarioActual, StrFiltro.ToString, 100, 200) End Sub Public Sub ExportToExcelG(Gv As GridView, 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) Dim sw As New StringWriter() Dim htw As New HtmlTextWriter(sw) Gv.RenderControl(htw) GemBox.Spreadsheet.SpreadsheetInfo.SetLicense("ESWN-4QFD-26JF-1SZ8") Dim excel As GemBox.Spreadsheet.ExcelFile Dim options = GemBox.Spreadsheet.LoadOptions.HtmlDefault Using htmlStream = New MemoryStream(options.Encoding.GetBytes(sw.ToString())) excel = GemBox.Spreadsheet.ExcelFile.Load(htmlStream, options) If Usuario IsNot Nothing Then Dim TotalRowHeader As Integer = 8 Dim TotalRowFooter As Integer = 2 Dim worksheet = excel.Worksheets(0) worksheet.Columns("A").Width = 15000 worksheet.Columns("B").Width = 7500 worksheet.Columns("C").Width = 5000 worksheet.Columns("D").Width = 5000 worksheet.Columns("E").Width = 5000 worksheet.Rows.InsertEmpty(0, TotalRowHeader) Dim celdasConTexto = worksheet.GetUsedCellRange(True) celdasConTexto.Style.Font.Name = "Calibri Light" 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 For i = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex worksheet.Rows(8).Cells(i).Style.Font.Size = 12 * 20 worksheet.Rows(8).Cells(i).Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center worksheet.Rows(8).Cells(i).Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center 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)) 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 Dim IndexEndTable As Integer = Gv.Rows.Count + TotalRowHeader + TotalRowFooter worksheet.Rows(IndexEndTable).Cells(0).Value = "Usuario Imprimió" worksheet.Rows(IndexEndTable + 1).Cells(0).Value = Usuario.Nombre worksheet.Rows(IndexEndTable).Cells(3).Value = "Fecha Impresión" worksheet.Rows(IndexEndTable + 1).Cells(3).Value = NowADS().ToString("dd/MM/yyyy") Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", Usuario.Empresa.Ruta)) If Imagen.Exists Then Dim Ruta As String = String.Format("{0}/Logo.png", Usuario.Empresa.Ruta) 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 End Using htw.Dispose() excel.Save(HttpContext.Current.Response, $"{NombreArchivoXLSx}.xlsx") End Sub End Class