This commit is contained in:
2023-06-20 17:59:59 -07:00
4 changed files with 4699 additions and 46 deletions

View File

@@ -2078,7 +2078,7 @@
<rd:DefaultName>Textbox45</rd:DefaultName>
<Top>6.53528cm</Top>
<Left>18.55801cm</Left>
<Height>0.6cm</Height>
<Height>0.63528cm</Height>
<Width>1.91058cm</Width>
<ZIndex>15</ZIndex>
<Visibility>
@@ -3043,7 +3043,7 @@
<Value>=Sum( iif(Fields!Sup.Value = "ACTIVO NO CIRCULANTE" OR Fields!Sup.Value="ACTIVO CIRCULANTE" OR Cint(Fields!TipoCuenta.value) = 9 , Fields!ImporteAnterior.Value, 0), "DataSet1")</Value>
</Variable>
<Variable Name="TotalPasivoActual">
<Value>=Sum( iif(Fields!Sup.Value = "PASIVO CIRCULANTE" OR Fields!Sup.Value = "PASIVO NO CIRCULANTE" OR Fields!Sup.Value = "Pasivo a corto plazo",
<Value>=Sum( iif(Fields!Sup.Value = "PASIVO CIRCULANTE" OR Fields!Sup.Value = "PASIVO NO CIRCULANTE" OR Fields!Sup.Value = "Pasivo a corto plazo" OR Fields!Sup.Value = "Pasivo a largo plazo",
Fields!ImporteActual.Value, 0), "DataSet1")</Value>
</Variable>
<Variable Name="TotalPasivoAnterior">
@@ -3063,6 +3063,7 @@ Fields!ImporteActual.Value, 0),"DataSet1")</Value>
</Variable>
<Variable Name="TotalPatrimonioCAnterior">
<Value>=Sum(Microsoft.VisualBasic.Interaction.iif(Fields!Sup.Value = "CAPITAL" OR Fields!Sup.Value = "CAPITAL CONTABLE" , Fields!ImporteAnterior.Value, 0),"DataSet1")</Value>
<Writable>true</Writable>
</Variable>
<Variable Name="TotalPatrimonioHAnterior">
<Value>=Sum(Microsoft.VisualBasic.Interaction.iif(Fields!Sup.Value = "CAPITAL" OR Fields!Sup.Value = "CAPITAL CONTABLE" , Fields!ImporteActual.Value, 0),"DataSet1")</Value>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,7 @@ Option Strict On
Imports System.Data
Imports System.Drawing
Imports System.IO
Imports CrystalDecisions.CrystalReports.Engine
Imports Extensiones
Imports GemBox.Spreadsheet
Imports Microsoft.Reporting.WebForms
@@ -85,6 +86,8 @@ Partial Class Nomina_RepPersonalDIM
GvDatos.DataBind()
UpAcciones.Update()
UpGvCargaDatos.Update()
End Sub
@@ -97,53 +100,346 @@ Partial Class Nomina_RepPersonalDIM
End Sub
Private Sub Imprimir(Optional reporte As String = "PDF")
GvDatos.ExportToExcelGembox("RepPersonalDIM", UsuarioActual, "Reporte Personal ", "", DatosFiltros:=$"Ejercicio {DdlEjercicio.SelectedItem.Text}")
ExportToExcelGembox(GvDatos, "RepPersonalDIM", UsuarioActual, "Reporte Personal DIM", "", DatosFiltros:=$"Ejercicio {DdlEjercicio.SelectedItem.Text}")
End Sub
Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
End Sub
Protected Sub LnkDescargaArchivo_Click(ByVal sender As Object, ByVal e As EventArgs) Handles LnkDescargaArchivo.Click
Dim tabla As DataTable = Dt_Datos ' Reemplaza esto con tu método para obtener la tabla
Dim tabla As DataTable = Dt_Datos
Dim contenido As String = ConvertirTablaATexto(tabla)
Dim contenidoBytes As Byte() = Encoding.UTF8.GetBytes(ConvertirTablaATexto(tabla))
' Guardar el archivo en el servidor
Dim nombreArchivo As String = "tabla.txt"
Dim rutaArchivo As String = Server.MapPath("~/Descargas/" & nombreArchivo)
File.WriteAllText(rutaArchivo, contenido)
Using memoryStream As New MemoryStream(contenidoBytes)
Response.Clear()
Response.ContentType = "text/plain"
Response.AddHeader("Content-Disposition", $"attachment; filename=RepPersonalDIM{DdlEjercicio.SelectedItem.Text}.txt")
memoryStream.WriteTo(Response.OutputStream)
End Using
' Descargar el archivo
Response.ContentType = "text/plain"
Response.AppendHeader("Content-Disposition", "attachment; filename=" & nombreArchivo)
Response.TransmitFile(rutaArchivo)
Response.End()
End Sub
Public Function ConvertirTablaATexto(ByVal tabla As DataTable) As String
Dim sb As New StringBuilder()
Public Function ConvertirTablaATexto(ByVal DT As DataTable) As String
For Each fila As DataRow In tabla.Rows
For i As Integer = 0 To tabla.Columns.Count - 1
sb.Append(fila(i).ToString())
Dim DTDatos As DataTable = DT.Copy()
If i < tabla.Columns.Count - 1 Then
sb.Append("|") ' Agrega el separador de pipes
End If
Next
Dim columnasARemover As New List(Of DataColumn)()
sb.AppendLine() ' Agrega un salto de línea al final de cada fila
For Each columna As DataColumn In DTDatos.Columns
If columna.ColumnName.Contains("CvePersonal") Then
columnasARemover.Add(columna)
End If
Next
Return sb.ToString()
For Each columna As DataColumn In columnasARemover
DTDatos.Columns.Remove(columna)
Next
DTDatos.AcceptChanges()
Dim sb As New StringBuilder
For Each fila As DataRow In DTDatos.Rows
For i As Integer = 0 To DTDatos.Columns.Count - 1
sb.Append(fila(i).ToString())
If i < DTDatos.Columns.Count - 1 Then
sb.Append("|")
End If
Next
sb.AppendLine()
Next
Return sb.tostring
End Function
#End Region
Protected Sub GvDatos_DataBound(sender As Object, e As EventArgs)
Dim row As New GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal)
Dim cell As New TableHeaderCell()
cell.Text = "ANEXO 1 INFORMACION DEL EMPLEADO ->"
cell.ColumnSpan = 28
cell.HorizontalAlign = HorizontalAlign.Left
row.Controls.Add(cell)
cell = New TableHeaderCell()
cell.ColumnSpan = 18
cell.Text = "ANEXO 1 PAGOS POR SEPARACION ->"
cell.HorizontalAlign = HorizontalAlign.Left
row.Controls.Add(cell)
cell = New TableHeaderCell()
cell.ColumnSpan = 2
cell.Text = " ANEXO 1 ASIM SAL-> "
cell.HorizontalAlign = HorizontalAlign.Left
row.Controls.Add(cell)
cell = New TableHeaderCell()
cell.ColumnSpan = 58
cell.Text = "ANEXO 1 PAGOS DEL PATRÓN EFECTUADOS A SUS TRABAJADORES ->"
cell.HorizontalAlign = HorizontalAlign.Left
row.Controls.Add(cell)
cell = New TableHeaderCell()
cell.ColumnSpan = 19
cell.Text = "ANEXO 1 IMPUESTO SOBRE LA RENTA (RESUMEN) ->"
cell.HorizontalAlign = HorizontalAlign.Left
row.Controls.Add(cell)
'row.BackColor = ColorTranslator.FromHtml("#3AC0F2")
GvDatos.HeaderRow.Parent.Controls.AddAt(0, row)
End Sub
Public Sub ExportToExcelGembox(GridView As GridView, NombreArchivoXLSx As String, Usuario As Usuario, Titulo As String, Optional DatoTituloExtra As String = "", Optional DatosFiltros As String = "", Optional AnchoImagen As Integer = 100, Optional AlturaImagen As Integer = 100, Optional DTExtra As DataTable = Nothing)
Dim sw1 As New StringWriter()
Dim htw1 As New HtmlTextWriter(sw1)
GridView.RenderControl(htw1)
Dim options = GemBox.Spreadsheet.LoadOptions.HtmlDefault
Dim htmlStream1 = New MemoryStream(options.Encoding.GetBytes(sw1.ToString()))
htmlStream1.Position = 0
Dim sr1 As New StreamReader(htmlStream1)
Dim myStr1 = sr1.ReadToEnd()
sr1.Dispose()
htmlStream1.Dispose()
sw1.Dispose()
Dim HtmlCompleto As String = myStr1
HtmlCompleto = Regex.Replace(HtmlCompleto, "\<[\/]*a[^\>]*\>", "")
Dim htmlStream5 = New MemoryStream(options.Encoding.GetBytes(HtmlCompleto))
GemBox.Spreadsheet.SpreadsheetInfo.SetLicense(SerialGemBoxSpreadsheet)
Dim excel As GemBox.Spreadsheet.ExcelFile
excel = GemBox.Spreadsheet.ExcelFile.Load(htmlStream5, options)
If Usuario IsNot Nothing Then
Dim TotalRowHeader As Integer = 6
Dim TotalRowFooter As Integer = 2
Dim worksheet = excel.Worksheets(0)
worksheet.Rows.InsertEmpty(0, TotalRowHeader)
Dim celdasConTexto = worksheet.GetUsedCellRange(True)
If celdasConTexto Is Nothing Then Exit Sub 'No se recuperaron datos, salir de sin guardar porque soltará error
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 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 DatoTituloExtra.Length > 0 Then
Dim RangoDatoTituloExtra = worksheet.Cells.GetSubrangeAbsolute(TotalRowHeader, celdasConTexto.FirstColumnIndex, TotalRowHeader, celdasConTexto.LastColumnIndex)
RangoDatoTituloExtra.Merged = True
RangoDatoTituloExtra.Value = DatoTituloExtra
RangoDatoTituloExtra.Style.Font.Size = 20 * 20
RangoDatoTituloExtra.Style.Font.Name = "Calibri Light"
RangoDatoTituloExtra.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Left
RangoDatoTituloExtra.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
End If
If DatosFiltros.Length > 0 Then
Dim Arreglo As String() = DatosFiltros.Split("|"c)
worksheet.Rows.InsertEmpty(TotalRowHeader, Arreglo.Count)
For Each TextoFiltro As String In Arreglo
Dim RangoDatoTituloExtra = worksheet.Cells.GetSubrangeAbsolute(TotalRowHeader, celdasConTexto.FirstColumnIndex, TotalRowHeader, celdasConTexto.LastColumnIndex)
RangoDatoTituloExtra.Merged = True
RangoDatoTituloExtra.Value = TextoFiltro
RangoDatoTituloExtra.Style.Font.Size = 12 * 20
RangoDatoTituloExtra.Style.Font.Name = "Calibri Light"
RangoDatoTituloExtra.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Left
RangoDatoTituloExtra.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
TotalRowHeader += 1
Next
End If
' TotalRowHeader += 2
For i = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex
worksheet.Rows(TotalRowHeader).Cells(i).Style.Font.Size = 12 * 20
worksheet.Rows(TotalRowHeader).Cells(i).Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center
worksheet.Rows(TotalRowHeader).Cells(i).Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center
worksheet.Rows(TotalRowHeader).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(TotalRowHeader).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 = GridView.Rows.Count + TotalRowHeader + TotalRowFooter
worksheet.Rows(IndexEndTable).Cells(1).Value = "Usuario Imprimió"
worksheet.Rows(IndexEndTable + 1).Cells(1).Value = Usuario.Nombre
worksheet.Rows(IndexEndTable).Cells(3).Value = "Fecha Impresión"
worksheet.Rows(IndexEndTable + 1).Cells(3).Value = DateTime.Now.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
For I = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex
If I > 0 Then
If 1 = 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
If DTExtra IsNot Nothing Then
Dim NombreTabla As String = ""
If DTExtra.TableName IsNot Nothing Then
NombreTabla = DTExtra.TableName
End If
If NombreTabla.Trim = "" Then
NombreTabla = "hoja2"
End If
'excel.Worksheets.Add(NombreTabla)
Dim workbookDTExtra = New ExcelFile
Dim worksheetDTExtra = workbookDTExtra.Worksheets.Add(NombreTabla)
worksheetDTExtra.InsertDataTable(DTExtra,
New InsertDataTableOptions() With
{
.ColumnHeaders = True,
.StartRow = 0
})
Dim columnCount = worksheetDTExtra.CalculateMaxUsedColumns()
For i As Integer = 0 To columnCount - 1
worksheetDTExtra.Columns(i).AutoFit(1, worksheetDTExtra.Rows(1), worksheetDTExtra.Rows(worksheetDTExtra.Rows.Count - 1))
worksheetDTExtra.Cells(0, i).Style.FillPattern.SetSolid(Drawing.ColorTranslator.FromHtml("#4b77be"))
worksheetDTExtra.Cells(0, i).Style.Font.Color = GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255)
Next
excel.Worksheets.AddCopy(NombreTabla, worksheetDTExtra)
excel.Worksheets(0).Name = Titulo
End If
Dim indexRow As Integer = 8
Dim indexRowGV As Integer = 0
Dim cssClassRow As String = ""
Dim CountRowFiltros As Integer = -1
If DatosFiltros.Trim.Length > 0 Then
CountRowFiltros = 0
End If
For indexRow = 8 To worksheet.Rows.Count - 4
Try
cssClassRow = GridView.Rows(indexRowGV).CssClass.Trim()
Select Case cssClassRow
Case "Totales"
worksheet.Cells.GetSubrangeRelative(indexRow + CountRowFiltros, 0, celdasConTexto.LastColumnIndex + 1, 1).Style.FillPattern.SetSolid(System.Drawing.ColorTranslator.FromHtml("#67809f"))
worksheet.Cells.GetSubrangeRelative(indexRow + CountRowFiltros, 0, celdasConTexto.LastColumnIndex + 1, 1).Style.Font.Weight = 1000
worksheet.Cells.GetSubrangeRelative(indexRow + CountRowFiltros, 0, celdasConTexto.LastColumnIndex + 1, 1).Style.Font.Color = System.Drawing.ColorTranslator.FromHtml("#ddd")
Exit Select
Case "SubTotales2"
worksheet.Cells.GetSubrangeRelative(indexRow + CountRowFiltros, 0, celdasConTexto.LastColumnIndex + 1, 1).Style.FillPattern.SetSolid(System.Drawing.ColorTranslator.FromHtml("#c0c0c0"))
worksheet.Cells.GetSubrangeRelative(indexRow + CountRowFiltros, 0, celdasConTexto.LastColumnIndex + 1, 1).Style.Font.Weight = 1000
worksheet.Cells.GetSubrangeRelative(indexRow + CountRowFiltros, 0, celdasConTexto.LastColumnIndex + 1, 1).Style.Font.Color = System.Drawing.ColorTranslator.FromHtml("#000077")
Exit Select
Case "SubTotales"
worksheet.Cells.GetSubrangeRelative(indexRow + CountRowFiltros, 0, celdasConTexto.LastColumnIndex + 1, 1).Style.FillPattern.SetSolid(System.Drawing.ColorTranslator.FromHtml("#dddddd"))
worksheet.Cells.GetSubrangeRelative(indexRow + CountRowFiltros, 0, celdasConTexto.LastColumnIndex + 1, 1).Style.Font.Weight = 1000
worksheet.Cells.GetSubrangeRelative(indexRow + CountRowFiltros, 0, celdasConTexto.LastColumnIndex + 1, 1).Style.Font.Color = System.Drawing.ColorTranslator.FromHtml("#67809F")
Exit Select
Case Else
Exit Select
End Select
Catch ex As Exception
End Try
indexRowGV += 1
Next
End If
excel.Save(HttpContext.Current.Response, $"{NombreArchivoXLSx}.xlsx")
End Sub
End Class