Ejemplo n.º 1
0
        public ActionResult SubirExcel(GrupoPersonaExcelViewModel gpevm)
        {
            if (!ModelState.IsValid)
            {
                return(View("FormExcel", gpevm));
            }
            //En este punto tenemos el View model con informacion.
            //generamos un path.
            String path = Server.MapPath(Constantes.RUTA_TEMPORAL_EXCEL_GRUPOPERSONAS + gpevm.file.FileName);

            //revisamos si existe el archivo, al final de todo esto se elimina, es decir, no debe de existir el archivo.
            if (!System.IO.File.Exists(path))
            {
                gpevm.file.SaveAs(path);
                FileInfo fi = new FileInfo(path);
                if (fi.Exists)
                {
                    using (ExcelPackage ep = new ExcelPackage(fi)) {
                        //Implícitamente solo existe 1 worksheet, de modo que tomamos el primero
                        ExcelWorksheet exw = ep.Workbook.Worksheets[1];

                        //obtenemos las columnas y filas.
                        int columCount = exw.Dimension.End.Column;
                        int rowCount   = exw.Dimension.End.Row;
                        //generamos una lista vacia
                        List <GrupoPersona> lgp = new List <GrupoPersona>();

                        for (int row = 2; row < rowCount; row++)
                        {
                            if (exw.Cells[row, 1].Value != null &&
                                exw.Cells[row, 2].Value != null &&
                                exw.Cells[row, 3].Value != null &&
                                exw.Cells[row, 4].Value != null &&
                                exw.Cells[row, 5].Value != null)
                            {
                                GrupoPersona gp          = new GrupoPersona();
                                char         delimitador = '.';
                                string[]     PersonaId   = exw.Cells[row, 1].Text.Split(delimitador);
                                string[]     GrupoId     = exw.Cells[row, 3].Text.Split(delimitador);
                                string[]     MateriaId   = exw.Cells[row, 2].Text.Split(delimitador);
                                string[]     CicloId     = exw.Cells[row, 4].Text.Split(delimitador);
                                string[]     ProfesorId  = exw.Cells[row, 5].Text.Split(delimitador);

                                gp.PersonaId  = int.Parse(PersonaId[0]);
                                gp.GrupoId    = int.Parse(GrupoId[0]);
                                gp.MateriaId  = int.Parse(MateriaId[0]);
                                gp.CicloId    = int.Parse(CicloId[0]);
                                gp.ProfesorId = int.Parse(ProfesorId[0]);

                                lgp.Add(gp);
                            }
                            int x = 4;
                        }
                        //ahora guardamos
                        for (int i = 0; i < lgp.Count; i++)
                        {
                            _ctx.GrupoPersonas.Add(lgp[i]);
                        }
                        _ctx.SaveChanges();
                    }
                }
            }
            return(View("FormExcel", gpevm));
        }
Ejemplo n.º 2
0
        public ActionResult Excel()
        {
            byte[] fileData = null;
            GrupoPersonaExcelViewModel gpevm = new GrupoPersonaExcelViewModel();
            string nombre      = DateTime.Now.ToString("yyyy-MM-dd--hh-mm-ss") + Constantes.XLSX;
            string contentType = MimeMapping.GetMimeMapping(nombre);

            Response.AppendHeader(Constantes.CONTENT_DISPOSITION_HEADER_NAME, String.Format(Constantes.CONTEN_DISPOSITION_HEADER_VALUE, nombre));

            using (var e = new ExcelPackage())
                using (var memoryStream = new MemoryStream())
                {
                    e.Workbook.Worksheets.Add("Tabla");
                    e.Workbook.Worksheets.Add("Personas");
                    e.Workbook.Worksheets.Add("Materias");
                    e.Workbook.Worksheets.Add("Grupo");
                    e.Workbook.Worksheets.Add("Ciclo");
                    e.Workbook.Worksheets.Add("Profesor");

                    var wsTabla    = e.Workbook.Worksheets[1];
                    var wsPersona  = e.Workbook.Worksheets[2];
                    var wsMateria  = e.Workbook.Worksheets[3];
                    var wsGrupo    = e.Workbook.Worksheets[4];
                    var wsCiclo    = e.Workbook.Worksheets[5];
                    var wsProfesor = e.Workbook.Worksheets[6];


                    //Headers de Tabla
                    List <string> col_headers = new List <string>();
                    col_headers.Add("Persona");
                    col_headers.Add("Materia");
                    col_headers.Add("Grupo");
                    col_headers.Add("Ciclo");
                    col_headers.Add("Profesor");

                    //Acomodo de Headers
                    for (int i = 0; i < col_headers.Count; i++)
                    {
                        wsTabla.Cells[1, i + 1].Value =
                            col_headers[i];
                    }

                    //listas que van a iterar los worksheets
                    List <Materia> materias   = _ctx.Materias.Where(x => x.activo == true).ToList();
                    List <Grupo>   grupos     = _ctx.Grupos.ToList();
                    List <Ciclo>   ciclos     = _ctx.Ciclos.ToList();
                    List <Persona> personas   = _ctx.Personas.Where(x => x.TipoPersonaId == TipoPersona.Alumno).ToList();
                    List <Persona> profesores = _ctx.Personas.Where(x => x.TipoPersonaId == TipoPersona.Profesor).ToList();

                    //ahora definimos las listas con valores aceptados
                    var dvListMateria = wsTabla.DataValidations.AddListValidation("B$2:B$50");
                    var dvListPersona = wsTabla.DataValidations.AddListValidation("A$2:A$50");
                    var dvListGrupo   = wsTabla.DataValidations.AddListValidation("C$2:C$50");
                    var dvListCiclo   = wsTabla.DataValidations.AddListValidation("D$2:D$50");
                    var dvListProfe   = wsTabla.DataValidations.AddListValidation("E$2:E$50");

                    //llenamos el worksheet y listas

                    //materias
                    for (int i = 0; i < materias.Count; i++)
                    {
                        string valorContenido = materias[i].Id + "." + materias[i].nombre;
                        wsMateria.Cells[i + 1, 1].Value = valorContenido;
                        dvListMateria.Formula.Values.Add(valorContenido);
                    }
                    //Personas
                    for (int i = 0; i < personas.Count; i++)
                    {
                        string valorContenido = personas[i].Id + "." + personas[i].nombre + " " + personas[i].apellido;
                        wsPersona.Cells[i + 1, 1].Value = valorContenido;
                        dvListPersona.Formula.Values.Add(valorContenido);
                    }
                    //grupo
                    for (int i = 0; i < grupos.Count; i++)
                    {
                        string valorContenido = grupos[i].Id + "." + grupos[i].codigo;
                        wsGrupo.Cells[i + 1, 1].Value = valorContenido;
                        dvListGrupo.Formula.Values.Add(valorContenido);
                    }
                    //ciclo
                    for (int i = 0; i < ciclos.Count; i++)
                    {
                        string valorContenido = ciclos[i].Id + "." + ciclos[i].fecha_inicio.Value.ToString("dd/MM/yyyy") + "_" + ciclos[i].fecha_fin.Value.ToString("dd/MM/yyyy");
                        wsCiclo.Cells[i + 1, 1].Value = valorContenido;
                        dvListCiclo.Formula.Values.Add(valorContenido);
                    }
                    //Profesor
                    for (int i = 0; i < profesores.Count; i++)
                    {
                        string valorContenido = profesores[i].Id + "." + profesores[i].nombre + " " + profesores[i].apellido;
                        wsProfesor.Cells[i + 1, 1].Value = valorContenido;
                        dvListProfe.Formula.Values.Add(valorContenido);
                    }

                    e.SaveAs(memoryStream);
                    memoryStream.Seek(0, SeekOrigin.Begin);
                    fileData = memoryStream.ToArray();
                }
            return(File(fileData, contentType));
        }
Ejemplo n.º 3
0
        public ActionResult Carga()
        {
            GrupoPersonaExcelViewModel g = new GrupoPersonaExcelViewModel();

            return(View("FormExcel", g));
        }