public void ExportExcel() { if ((sesion = SessionDB.start(Request, Response, false, db)) == null) { return; } ProgressBarCalc progressbar = new ProgressBarCalc(sesion, "ReportedePago"); progressbar.prepare(); List <string> lPadre = new List <string>(); List <string> lPadreBloq = new List <string>(); List <string> lHijoBloq = new List <string>(); List <string> lPensionados = new List <string>(); List <string> lSubPadre = new List <string>(); List <string> lSubPadreBloq = new List <string>(); List <string> lSubHijoBloq = new List <string>(); List <string> lSubPensionados = new List <string>(); try { System.Data.DataTable tbl = new System.Data.DataTable(); tbl.Columns.Add("Campus", typeof(string)); tbl.Columns.Add("Periodo", typeof(string)); tbl.Columns.Add("ID", typeof(string)); tbl.Columns.Add("Docente", typeof(string)); tbl.Columns.Add("Parte del periodo", typeof(string)); tbl.Columns.Add("Esquema", typeof(string)); tbl.Columns.Add("Concepto", typeof(string)); tbl.Columns.Add("Monto", typeof(string)); tbl.Columns.Add("IVA", typeof(string)); tbl.Columns.Add("IVA Ret", typeof(string)); tbl.Columns.Add("ISR Ret", typeof(string)); tbl.Columns.Add("Banco", typeof(string)); tbl.Columns.Add("Fecha de pago", typeof(string)); tbl.Columns.Add("F. Recibo", typeof(string)); tbl.Columns.Add("F. Dispersión", typeof(string)); tbl.Columns.Add("F. Depósito", typeof(string)); tbl.Columns.Add("F. Solicitado", typeof(string)); tbl.Columns.Add("Tipo de pago", typeof(string)); tbl.Columns.Add("Centro de costos", typeof(string)); tbl.Columns.Add("Usuario", typeof(string)); tbl.Columns.Add("F.Modificación", typeof(string)); List <string> filtros = new List <string>(); ResultSet res = getRowsTable(Request, filtros, 1); int count = res.Count; progressbar.init(count + 1);//99 int row = 2; string fil_ED = Request.Params["filtro_"]; while (res.Next()) { if (res.Get("PADRE") == "0") { if (fil_ED != "PD") { getRowsTableExcel(tbl, res); lPadre.Add("A" + row + ":U" + row); } var bloqueoContrato = res.GetBool("BLOQUEOCONTRATO");//BLOQUEOCONTRATO es 1(bloqueado) if (((bloqueoContrato && string.IsNullOrWhiteSpace(res.Get("FECHADEENTREGA"))) || res.GetInt("BLOQUEOS") > 0) && fil_ED != "PD") { lPadreBloq.Add("G" + row + ":G" + row); } if (fil_ED != "PD") { row++; } TABLECONDICIONSQLD = " ID_ESTADODECUENTA = " + res.Get("ID_ESTADODECUENTA"); res2 = getRowsTable(Request, filtros, 2); //Detalle Estado de Cuenta if (fil_ED != "PE") { while (res2.Next()) { getRowsTableExcelECDetalle(tbl, res2); bloqueoContrato = res2.GetBool("BLOQUEOCONTRATO");//BLOQUEOCONTRATO es 1(bloqueado) if ((bloqueoContrato && string.IsNullOrWhiteSpace(res2.Get("FECHADEENTREGA"))) || res2.GetInt("BLOQUEOS") > 0) { lHijoBloq.Add("G" + row + ":G" + row); } row++; } } // termina el listado de PADRE 0 y sus detalles /** - LA BÚSQUEDA DE PENSIONADOS - **/ ResultSet resP = this.getRowsTableP(sesion.db, res.Get("ID_ESTADODECUENTA")); if (fil_ED != "PE") { while (resP.Next()) { getRowsTableExcelECDetalle(tbl, resP); lPensionados.Add("B" + row + ":U" + row); row++; } } /** - LA BÚSQUEDA DE SUBPADRES - **/ ResultSet resH = this.getRowsTableH(sesion.db, res.Get("ID_ESTADODECUENTA")); if (fil_ED != "PE") { while (resH.Next()) { getRowsTableExcel(tbl, resH); lSubPadre.Add("A" + row + ":U" + row); bloqueoContrato = resH.GetBool("BLOQUEOCONTRATO");//BLOQUEOCONTRATO es 1(bloqueado) if ((bloqueoContrato && string.IsNullOrWhiteSpace(resH.Get("FECHADEENTREGA"))) || resH.GetInt("BLOQUEOS") > 0) { lSubPadreBloq.Add("G" + row + ":G" + row); } row++; /* Comienza la búsqueda de los SUBHIJOS de cada SUBPADRE */ /*********************************************************/ TABLECONDICIONSQLD = " ID_ESTADODECUENTA = " + resH.Get("ID_ESTADODECUENTA"); res3 = this.getRowsTable(Request, filtros, 2); while (res3.Next()) { getRowsTableExcelECDetalle(tbl, res3); bloqueoContrato = res3.GetBool("BLOQUEOCONTRATO");//BLOQUEOCONTRATO es 1(bloqueado) if ((bloqueoContrato && string.IsNullOrWhiteSpace(res3.Get("FECHADEENTREGA"))) || res3.GetInt("BLOQUEOS") > 0) { lSubHijoBloq.Add("G" + row + ":G" + row); } row++; } /** - COMIENZA LA BÚSQUEDA DE SUB-PENSIONADOS - **/ ResultSet resP2 = this.getRowsTableSP(sesion.db, res.Get("ID_ESTADODECUENTA"), resH.Get("ID_ESTADODECUENTA")); while (resP2.Next()) { getRowsTableExcelECDetalle(tbl, resP2); lSubPensionados.Add("B" + row + ":U" + row); row++; } } } } progressbar.progress(); } using (ExcelPackage pck = new ExcelPackage()) { //Create the worksheet ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Estado de Cuenta"); //Load the datatable into the sheet, starting from cell A1. Print the column names on row 1 ws.Cells["A1"].LoadFromDataTable(tbl, true); ws.Cells["A1:U1"].AutoFitColumns(); //Format the header for column 1-3 using (ExcelRange rng = ws.Cells["A1:U1"]) { rng.Style.Font.Bold = true; rng.Style.Fill.PatternType = ExcelFillStyle.Solid; //Set Pattern for the background to Solid rng.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(79, 129, 189)); //Set color to dark blue rng.Style.Font.Color.SetColor(Color.White); } foreach (var x in lPadre) { using (ExcelRange rngX = ws.Cells[x]) { rngX.Style.Fill.PatternType = ExcelFillStyle.Solid; rngX.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(201, 223, 240)); rngX.Style.Font.Color.SetColor(Color.Black); } } foreach (var x in lPadreBloq) { using (ExcelRange rngX = ws.Cells[x]) { rngX.Style.Font.Strike = true; rngX.Style.Fill.PatternType = ExcelFillStyle.Solid; rngX.Style.Font.Color.SetColor(Color.Red); } } foreach (var x in lPensionados) { using (ExcelRange rngX = ws.Cells[x]) { rngX.Style.Fill.PatternType = ExcelFillStyle.Solid; rngX.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(240, 237, 184)); rngX.Style.Font.Color.SetColor(Color.Black); } } foreach (var x in lHijoBloq) { using (ExcelRange rngX = ws.Cells[x]) { rngX.Style.Font.Strike = true; rngX.Style.Fill.PatternType = ExcelFillStyle.Solid; rngX.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(255, 255, 255)); rngX.Style.Font.Color.SetColor(Color.Red); } } foreach (var x in lSubPadre) { using (ExcelRange rngX = ws.Cells[x]) { rngX.Style.Fill.PatternType = ExcelFillStyle.Solid; rngX.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(226, 231, 235)); rngX.Style.Font.Color.SetColor(Color.Black); } } foreach (var x in lSubPadreBloq) { using (ExcelRange rngX = ws.Cells[x]) { rngX.Style.Font.Strike = true; rngX.Style.Fill.PatternType = ExcelFillStyle.Solid; rngX.Style.Font.Color.SetColor(Color.Red); } } foreach (var x in lSubHijoBloq) { using (ExcelRange rngX = ws.Cells[x]) { rngX.Style.Font.Strike = true; rngX.Style.Fill.PatternType = ExcelFillStyle.Solid; rngX.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(255, 255, 255)); rngX.Style.Font.Color.SetColor(Color.Red); } } foreach (var x in lSubPensionados) { using (ExcelRange rngX = ws.Cells[x]) { rngX.Style.Fill.PatternType = ExcelFillStyle.Solid; rngX.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(240, 237, 184)); rngX.Style.Font.Color.SetColor(Color.Black); } } //Example how to Format Column 1 as numeric using (ExcelRange col = ws.Cells[2, 1, 2 + tbl.Rows.Count, 1]) { col.Style.Numberformat.Format = "#,##0.00"; col.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right; } //Write it back to the client Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment; filename=EstadodeCuenta.xlsx"); Response.BinaryWrite(pck.GetAsByteArray()); } Log.write(this, "Start", LOG.CONSULTA, "Exporta Excel Estado de Cuenta", sesion); } catch (Exception e) { ViewBag.Notification = Notification.Error(e.Message); Log.write(this, "Start", LOG.ERROR, "Exporta Excel Estado de Cuenta" + e.Message, sesion); } progressbar.complete(); }
public bool ValidarExcel(string fileName, SessionDB sesion, System.Data.DataTable tbl, List <NominaExcelModel> listModels) { ProgressBarCalc progressbar = new ProgressBarCalc(sesion, "NominaExcel"); progressbar.prepare(); NominaExcelModel auxModel = new NominaExcelModel(); auxModel.sesion = sesion; auxModel.clean(); auxModel.cargaListas(); tbl.Columns.Add("CVE_SEDE", typeof(string)); tbl.Columns.Add("PARTEDELPERIODO", typeof(string)); tbl.Columns.Add("PERIODO", typeof(string)); tbl.Columns.Add("ID_CENTRODECOSTOS", typeof(string)); tbl.Columns.Add("IDSIU", typeof(string)); tbl.Columns.Add("ID_PERSONA", typeof(string)); tbl.Columns.Add("TIPODEDOCENTE", typeof(string)); tbl.Columns.Add("NOCURSOS", typeof(string)); tbl.Columns.Add("HORASAPAGAR", typeof(string)); tbl.Columns.Add("OPCIONDEPAGO", typeof(string)); tbl.Columns.Add("CVE_TIPODEPAGO", typeof(string)); tbl.Columns.Add("TABULADOR", typeof(string)); tbl.Columns.Add("ID_ESQUEMA", typeof(string)); tbl.Columns.Add("MONTOAPAGAR", typeof(string)); tbl.Columns.Add("CVE_ESCUELA", typeof(string)); tbl.Columns.Add("CAMPUS_INB", typeof(string)); tbl.Columns.Add("MATERIA", typeof(string)); tbl.Columns.Add("CURSO", typeof(string)); tbl.Columns.Add("NOMBREMATERIA", typeof(string)); int paso = 1; NOMINA current = NOMINA.CVE_SEDE; // Cargar el excel en los modelos. try { using (ExcelPackage xlPackage = new ExcelPackage(new FileInfo(fileName))) { paso = 1; // 1.- Get the first worksheet in the workbook ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[1]; Dictionary <string, int> col = new Dictionary <string, int>(); Dictionary <NOMINA, object> dataValid = new Dictionary <NOMINA, object>(); int start = worksheet.Dimension.Start.Column; int end = worksheet.Dimension.End.Column; int y = worksheet.Dimension.Start.Row; for (int x = start; x <= end; x++) { string head = worksheet.Cells[y, x].Text.ToUpper(); col.Add(head, x); } start = 1 + worksheet.Dimension.Start.Row; // se le suma 1 por las cabeceras end = worksheet.Dimension.End.Row; progressbar.init(end - start + 2); DateTime dt_1 = DateTime.Now; for (int row = start; row <= end; row++) { // ------------------- Parche para excluir las lineas vacias ------------------- bool emptyLine = true; for (int i = 1; i <= 14; i++) { if (string.IsNullOrWhiteSpace(worksheet.Cells[row, i].Text) == false) { emptyLine = false; break; } } if (emptyLine) { continue; } // ----------------------------------------------------------------------------- NominaExcelModel model = new NominaExcelModel(); model.sesion = sesion; paso = 2; // 2.- Se asignan los valores al modelo current = NOMINA.CVE_SEDE; model.CVE_SEDE = worksheet.Cells[row, col["CVE_SEDE"]].Text; current = NOMINA.PARTEPERIODO; model.PARTEPERIODO = worksheet.Cells[row, col["PARTEDELPERIODO"]].Text;// current = NOMINA.PERIODO; model.PERIODO = worksheet.Cells[row, col["PERIODO"]].Text; current = NOMINA.ID_CENTRODECOSTOS; model.ID_CENTRODECOSTOS = worksheet.Cells[row, col["ID_CENTRODECOSTOS"]].Text; current = NOMINA.IDSIU; model.IDSIU = worksheet.Cells[row, col["IDSIU"]].Text; current = NOMINA.ID_PERSONA; long.TryParse(worksheet.Cells[row, col["ID_PERSONA"]].Text, out model.ID_PERSONA); current = NOMINA.TIPODEDOCENTE; model.TIPODEDOCENTE = worksheet.Cells[row, col["TIPODEDOCENTE"]].Text; current = NOMINA.NOCURSOS; int.TryParse(worksheet.Cells[row, col["NOCURSOS"]].Text, out model.NOCURSOS); current = NOMINA.HORASAPAGAR; double.TryParse(worksheet.Cells[row, col["HORASAPAGAR"]].Text, out model.HORASAPAGAR); current = NOMINA.OPCIONDEPAGO; model.OPCIONDEPAGO = worksheet.Cells[row, col["OPCIONDEPAGO"]].Text; current = NOMINA.CVE_TIPODEPAGO; model.CVE_TIPODEPAGO = worksheet.Cells[row, col["CVE_TIPODEPAGO"]].Text; current = NOMINA.TABULADOR; model.TABULADOR = worksheet.Cells[row, col["TABULADOR"]].Text; current = NOMINA.ID_ESQUEMA; model.ID_ESQUEMA = worksheet.Cells[row, col["ID_ESQUEMA"]].Text; current = NOMINA.MONTOAPAGAR; double.TryParse(worksheet.Cells[row, col["MONTOAPAGAR"]].Text, out model.MONTOAPAGAR); current = NOMINA.CVE_ESCUELA; model.CVE_ESCUELA = worksheet.Cells[row, col["CVE_ESCUELA"]].Text; current = NOMINA.CAMPUS_INB; model.CAMPUS_INB = worksheet.Cells[row, col["CAMPUS_INB"]].Text; current = NOMINA.MATERIA; model.MATERIA = worksheet.Cells[row, col["MATERIA"]].Text; current = NOMINA.CURSO; model.CURSO = worksheet.Cells[row, col["CURSO"]].Text; current = NOMINA.NOMBREMATERIA; model.NOMBREMATERIA = worksheet.Cells[row, col["NOMBREMATERIA"]].Text; //carga esquema auxModel.cargarEsquema(model.CVE_SEDE, model.PERIODO, model.ID_ESQUEMA); paso = 3; // 3.- Se validan model.copiaListasDesde(auxModel); model.validate(); // 4.- Se guarda en la tabla temporal. model.Add_TMP(); listModels.Add(model); // 5.- Se agregan los datos al datatable. tbl.Rows.Add(model.getArrayObject(dataValid)); progressbar.progress(); } DateTime dt_2 = DateTime.Now; Debug.WriteLine("span:" + (dt_2 - dt_1)); } // the using statement calls Dispose() which closes the package. sesion.vdata.Remove("NominaExcelError"); sesion.saveSession(); progressbar.complete(); return(true); } catch (Exception) { if (paso == 1) { sesion.vdata["NominaExcelError"] = "Error en archivo de Excel"; } else if (paso == 2) { sesion.vdata["NominaExcelError"] = "No se encuentra la columna '" + current + "'"; } else if (paso == 3) { sesion.vdata["NominaExcelError"] = "Error validando Excel"; } sesion.saveSession(); progressbar.complete(); return(false); } }