C# MVC, SQL to Excel

Topics: Developer Forum
May 14, 2013 at 2:29 PM
Hi,
I want to make some tabs in my worksheet when I pass the information between DataBase and Excel.
In the first tab I want the information with some especific ordering and grouping(it's done), and in the second one I want the information without constraints.
I copied the code if anybody could help me to create that second tab.
Thanks.



public FileResult GenerarExcel(string usuario, DateTime? fechadesde, DateTime? fechahasta, string proyecto, EnumsAppNameIncidemcias departamento = EnumsAppNameIncidemcias.NoDefinido)
    {
        //var lista_usuarios = usuario.Split(',').ToList();
        var partes = db.ParteHorasIncidenciasAvenir.AsQueryable();

        if (!String.IsNullOrEmpty(usuario))
        {
            partes = partes.Where(c => c.Nom_Usuario.Contains(usuario));
        }
        if (fechadesde.HasValue && fechahasta.HasValue)
        {
            partes = partes.Where(c => c.Fecha >= fechadesde.Value && c.Fecha <= fechahasta.Value);
        }
        if (!departamento.CompararConEnum(EnumsAppNameIncidemcias.Todos) && !departamento.CompararConEnum(EnumsAppNameIncidemcias.NoDefinido))
        {
            partes = partes.Where(c => c.Nom_Dep == departamento.ToCodigo());
        }
        if (!String.IsNullOrEmpty(proyecto))
        {
            partes = partes.Where(c => c.Proyecto == proyecto);
        }

        var listapartes = partes.ToList();

        using (ExcelPackage pck = new ExcelPackage())
        {
            var partesAgrupados = listapartes.GroupBy(c => c.Nom_Dep);

            foreach (var parteagrupado in partesAgrupados)
            {

                //Create the worksheet 
                ExcelWorksheet ws = pck.Workbook.Worksheets.Add(parteagrupado.Key);



                ws.Cells["A1"].Value = "Fecha";
                ws.Cells["B1"].Value = "Nombre";
                ws.Cells["C1"].Value = "Unidad de Negocio";
                ws.Cells["D1"].Value = "Proyecto";
                ws.Cells["E1"].Value = "Tarea";
                ws.Cells["F1"].Value = "Descripcion";
                ws.Cells["G1"].Value = "Minutos";
                ws.Cells["H1"].Value = "Vinculado a Incidencia";


                //Format the header for column 1-3
                using (ExcelRange rng = ws.Cells["A1:H1"])
                {
                    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);
                }


                var parteagrupadoOrdenado = parteagrupado.OrderByDescending(c => c.Fecha).ThenBy(c => c.Nom_Usuario);
                var i = 2;
                foreach (var l in parteagrupadoOrdenado)
                {
                    ws.Cells["A" + i].Value = l.Fecha.ToShortDateString();
                    ws.Cells["B" + i].Value = l.Nom_Usuario;
                    ws.Cells["C" + i].Value = l.Nom_Dep;
                    ws.Cells["D" + i].Value = l.Proyecto;
                    ws.Cells["E" + i].Value = l.Tarea;
                    ws.Cells["F" + i].Value = l.Descripción;
                    ws.Cells["G" + i].Value = l.Minutos;
                    ws.Cells["H" + i].Value = l.id_I;

                    i++;
                }
            }                   

                //Write it back to the client
                // Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                //Response.AddHeader("content-disposition", "attachment;  filename=ParteIncidencias.xlsx");

                var memoryStream = pck.GetAsByteArray();
                var fileName = "ParteHorasOrdenado.xlsx";
                return base.File(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
        }
}