// GET: NominaExcel public ActionResult Start() { if ((sesion = SessionDB.start(Request, Response, false, db)) == null) { return(Content("")); } NominaExcelModel model = new NominaExcelModel(); model.sesion = sesion; model.clean(); Main view = new Main(); ViewBag.MainUser = view.CreateMenuInfoUser(sesion); ViewBag.Main = view.createMenu(7, 10, sesion); ViewBag.DataTable = CreateDataTable(10, 1, null, "ID_NOMINA", "ASC", sesion); ViewBag.Scripts = Scripts.addScript() + Scripts.setPrivileges(Privileges, sesion); //Intercom ViewBag.User = sesion.nickName.ToString(); ViewBag.Email = sesion.nickName.ToString(); ViewBag.FechaReg = DateTime.Today; if (!sesion.permisos.havePermission(Privileges[0].Permiso)) { return(View(Factory.View.NotAccess)); } Log.write(this, "Start", LOG.CONSULTA, "Ingresa Pantalla NominaExcel", sesion); return(View(Factory.View.Access + "Pagos/NominaExcel/Start.cshtml")); }
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); } }