diff --git a/GPS/Rastreo.aspx.vb b/GPS/Rastreo.aspx.vb index 154536392..9200f00dd 100644 --- a/GPS/Rastreo.aspx.vb +++ b/GPS/Rastreo.aspx.vb @@ -1578,22 +1578,39 @@ Partial Class GPS_Rastreo If Opcion = "KM" Then If GVKm.Rows.Count > 0 Then - RutaReporte = "Empresas/Grales/ReportesProgramados/RPTKmRecorridos.rdlc" - NombreReporte = "ReporteKMRecorridos" + If Format = "PDF" Then + RutaReporte = "Empresas/Grales/ReportesProgramados/RPTKmRecorridos.rdlc" + NombreReporte = "ReporteKMRecorridos" + + Try + Dim RptParametro As New List(Of ReportParameter) + RptParametro.Add(New ReportParameter("FechaInicio", FechaI.ToString)) + RptParametro.Add(New ReportParameter("FechaFin", FechaF.ToString)) + RptParametro.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario)) + RptParametro.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString)) + + retorno = StreamPDF(RutaReporte, DtDatos, RptParametro, $"{NombreReporte}{Date.Now.ToShortDateString}", Format, MR:=Nothing, RDSName:="DsOC") + + ImprimirbytesPDF(retorno, $"{NombreReporte}{Date.Now.ToShortDateString}", Format) + Catch ex As Exception + GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex)) + End Try + + Else + Dim filtros As String = $"Fechas: {FechaI.ToString("dd/MM/yyyy")} a {FechaF.ToString("dd/MM/yyyy")}" + + If DtDatos.Rows.Count > 0 AndAlso String.IsNullOrEmpty(DtDatos.Rows(0)("Vehiculo").ToString()) Then + DtDatos.Rows(0)("Vehiculo") = "Total Kilometros Recorridos" + End If + + DtDatos.Columns.RemoveAt(0) + DtDatos.Columns("Vehiculo").ColumnName = "Vehículo" + DtDatos.Columns("TiempoOperativo").ColumnName = "Tiempo Operativo" + DtDatos.Columns("Dist").ColumnName = "Kilometros Recorridos" + + ImprimirExcelG(DtDatos, "ReporteKMRecorridos.xlsx", "Reporte de Kilometros Recorridos", filtros, NombreHoja:="RepKM") + End If - Try - Dim RptParametro As New List(Of ReportParameter) - RptParametro.Add(New ReportParameter("FechaInicio", FechaI.ToString)) - RptParametro.Add(New ReportParameter("FechaFin", FechaF.ToString)) - RptParametro.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario)) - RptParametro.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString)) - - retorno = StreamPDF(RutaReporte, DtDatos, RptParametro, $"{NombreReporte}{Date.Now.ToShortDateString}", Format, MR:=Nothing, RDSName:="DsOC") - - ImprimirbytesPDF(retorno, $"{NombreReporte}{Date.Now.ToShortDateString}", Format) - Catch ex As Exception - GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex)) - End Try Else Alert("No se pudo imprimir el pdf, ya que no se ha hecho una consulta, o ésta no arrojó resultados.", TipoMensaje.MsgInformacion) End If @@ -1737,8 +1754,16 @@ Partial Class GPS_Rastreo GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex)) End Try - retorno = StreamPDF(RutaReporte, DtDatos, RptParametro, $"{NombreReporte}{Date.Now.ToShortDateString}", Format, MR:=Nothing, RDSName:="DsOC") - ImprimirbytesPDF(retorno, $"{NombreReporte}{Date.Now.ToShortDateString}", Format) + If Opcion = "Idle" AndAlso Format = "EXCEL" Then + Dim filtros As String = $"Fechas: {FechaI.ToString("dd/MM/yyyy")} a {FechaF.ToString("dd/MM/yyyy")}, Tiempo Muerto: {TxtMinutos.Text} minutos" + + ImprimirExcelG(DtDatos, "ReporteKMRecorridos.xlsx", "Reporte de KM Recorridos", filtros) + Else + retorno = StreamPDF(RutaReporte, DtDatos, RptParametro, $"{NombreReporte}{Date.Now.ToShortDateString}", Format, MR:=Nothing, RDSName:="DsOC") + ImprimirbytesPDF(retorno, $"{NombreReporte}{Date.Now.ToShortDateString}", Format) + End If + + DtDatos.Clear() Else Alert("No se pudo imprimir el pdf, ya que no se ha hecho una consulta, o ésta no arrojó resultados.", TipoMensaje.MsgInformacion) @@ -1785,7 +1810,7 @@ Partial Class GPS_Rastreo SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) Dim FileExcel As ExcelFile = New ExcelFile Dim Dt = DtPosiciones.Copy() - Dt.Columns.Add("Direccion", GetType(String)) + Dt.Columns.Add("Dirección", GetType(String)) Dt.Columns.Remove("CveDispositivo") Dt.Columns.Remove("Evento") Dt.Columns.Remove("Icono") @@ -1797,11 +1822,42 @@ Partial Class GPS_Rastreo Dt.Columns.Remove("Posicion") For Each Dir As JObject In Direcciones - Dt.Rows(Dir("Indice").ToEntero())("Direccion") = Dir("Direccion").ToString() + Dt.Rows(Dir("Indice").ToEntero())("Dirección") = Dir("Direccion").ToString() Next - Dim item = FileExcel.Worksheets.Add("Última Posición") - item.InsertDataTable(Dt, New InsertDataTableOptions() With + Dt.Columns("Vehiculo").ColumnName = "Vehículo" + Dt.Columns("Velocidad").ColumnName = "Velocidad (KM/H)" + + ImprimirExcelG(Dt, FileName, "Última Posición", "", NombreHoja:="UltimaPosicion") + + 'Dim item = FileExcel.Worksheets.Add("Última Posición") + 'item.InsertDataTable(Dt, New InsertDataTableOptions() With + ' { + ' .ColumnHeaders = True, + ' .StartRow = 0, + ' .StartColumn = 0 + ' }) + 'item.Rows(0).Style.FillPattern.SetPattern(FillPatternStyle.Solid, SpreadsheetColor.FromArgb(75, 119, 190), SpreadsheetColor.FromArgb(255, 255, 255)) + 'item.Rows(0).Style.Font.Color = SpreadsheetColor.FromArgb(255, 255, 255) + + 'Dim columnCount = item.CalculateMaxUsedColumns() + 'For i = 0 To columnCount + ' item.Columns(i).AutoFit(1, item.Rows(i), item.Rows(item.Rows.Count - 1)) + 'Next + 'FileExcel.Save(Me.Response, FileName, SaveOptions.XlsxDefault) + + End Sub + + + Private Sub ImprimirExcelG(DtDatos As DataTable, Archivo As String, Titulo As String, Filtros As String, Optional NombreHoja As String = "Hoja1") + SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) + Dim excel As ExcelFile = New ExcelFile + + Dim TotalRowHeader As Integer = 8 + Dim TotalRowFooter As Integer = 2 + + Dim item = excel.Worksheets.Add(NombreHoja) + item.InsertDataTable(DtDatos, New InsertDataTableOptions() With { .ColumnHeaders = True, .StartRow = 0, @@ -1813,9 +1869,127 @@ Partial Class GPS_Rastreo Dim columnCount = item.CalculateMaxUsedColumns() For i = 0 To columnCount item.Columns(i).AutoFit(1, item.Rows(i), item.Rows(item.Rows.Count - 1)) - Next - FileExcel.Save(Me.Response, FileName, SaveOptions.XlsxDefault) - + Next + + + Dim worksheet = excel.Worksheets(0) + 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 = GlobalDTCliente(UsuarioActual.CveEmpresa, CveCliente:=UsuarioActual.CveCliente).FiltroPrimeroValor("Nombre") + 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 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 + + + 'If FechaIMes.Trim.Length > 0 And FechaFMes.Trim.Length > 0 Then + ' Dim RangoFechas = worksheet.Cells.GetSubrangeAbsolute(4, celdasConTexto.FirstColumnIndex, 4, celdasConTexto.LastColumnIndex) + ' RangoFechas.Merged = True + ' RangoFechas.Value = $"Fechas: {FechaIMes} a {FechaFMes}" + ' RangoFechas.Style.Font.Size = 15 * 20 + ' RangoFechas.Style.Font.Name = "Calibri Light" + ' RangoFechas.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + ' RangoFechas.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + 'End If + + + 'If SubProyecto.Length > 0 Then + ' Dim RangoSubProyecto = worksheet.Cells.GetSubrangeAbsolute(5, celdasConTexto.FirstColumnIndex, 5, celdasConTexto.LastColumnIndex) + ' RangoSubProyecto.Merged = True + ' RangoSubProyecto.Value = SubProyecto + ' RangoSubProyecto.Style.Font.Size = 20 * 20 + ' RangoSubProyecto.Style.Font.Name = "Calibri Light" + ' RangoSubProyecto.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + ' RangoSubProyecto.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + 'End If + + + If Not String.IsNullOrEmpty(Filtros) Then + Dim RangoDatoTituloExtra = worksheet.Cells.GetSubrangeAbsolute(6, celdasConTexto.FirstColumnIndex, 6, celdasConTexto.LastColumnIndex) + RangoDatoTituloExtra.Merged = True + RangoDatoTituloExtra.Value = Filtros + RangoDatoTituloExtra.Style.Font.Size = 15 * 20 + RangoDatoTituloExtra.Style.Font.Name = "Calibri Light" + RangoDatoTituloExtra.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + RangoDatoTituloExtra.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + End If + + + 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 = DtDatos.Rows.Count + TotalRowHeader + TotalRowFooter + + worksheet.Rows(IndexEndTable).Cells(0).Value = "Usuario Imprimió" + worksheet.Rows(IndexEndTable + 1).Cells(0).Value = UsuarioActual.Nombre + + worksheet.Rows(IndexEndTable).Cells(2).Value = "Fecha Impresión" + worksheet.Rows(IndexEndTable + 1).Cells(2).Value = DateTime.Now.ToString("dd/MM/yyyy") + + 'Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + + 'If Imagen.Exists Then + ' Dim Ruta As String = String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta) + ' Using sr As New StreamReader(Ruta) + ' Dim ms As New MemoryStream() + ' sr.BaseStream.CopyTo(ms) + ' worksheet.Pictures.Add(ms, ExcelPictureFormat.Png, "A1", 100, 100, LengthUnit.Pixel) + ' End Using + 'End If + + + For I = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex + + If I > 0 Then + + 'If Divisor = 1 Then + ' worksheet.Columns(I + 1).Style.NumberFormat = "#,##0.00" + 'Else + ' worksheet.Columns(I + 1).Style.NumberFormat = "#,##" + 'End If + + Try + worksheet.Columns(I).AutoFit(1) + Catch ex As Exception + End Try + + End If + Next + + excel.Save(Me.Response, Archivo, SaveOptions.XlsxDefault) + End Sub Private Function CargaDireccion(ByVal lat As String, ByVal lng As String) As String Try