Skip to main content

Exportar datos de C# a Microsoft Excel


A veces las herramientas de reportería existentes no son flexibles a la hora de crear ciertos reportes que requieren un grado de complejidad muy alto, especialmente cuando tratamos con gráficos dinámicos.

Una solución para esto es exportar los datos directamente a un libro en Excel, facilitando la edición y permitiendo a usuario satisfacer las necesidades de representación de información.

Se requiere la librería que se instala con la suit de office llamada: Microsoft.Office.Interop.Excel.
He realizado pruebas en versiones de office 2010, 2013 y 2016 y el código funciona sin problemas.

static void ExportaExcel(IEnumerable<Empleados> accounts)
{
   var excelApp = new Excel.Application();
   excelApp.Visible = true;
   excelApp.Workbooks.Add();
   Excel._Worksheet workSheet = excelApp.ActiveSheet;

   // En versiones anteriores de C# se requiere una conversión
   explícita //Excel._Worksheet workSheet =   
   Excel.Worksheet)excelApp.ActiveSheet;

   workSheet.Cells[3, "A"] = "ID Number";
   workSheet.Cells[3, "B"] = "Nombre";
   workSheet.Cells[3, "C"] = "Salario";

   workSheet.Cells[1, "A"] = "Listado de Empleados";
   workSheet.Range["A1", "C1"].Merge();
   workSheet.Range["A1", "C1"].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
   workSheet.Range["A1", "C1"].Font.Bold = true;
   workSheet.Range["A1", "C1"].Font.Size = 20;

   var row = 3;
   foreach (var acct in accounts)
   {
      row++;
      workSheet.Cells[row, "A"] = acct.ID;
      workSheet.Cells[row, "B"] = acct.Nombre;
      workSheet.Cells[row, "C"] = acct.Salario;
    }
      workSheet.Columns[1].AutoFit();
      workSheet.Columns[2].AutoFit();
      workSheet.Columns[3].AutoFit();
      workSheet.Range["A3", "C5"].AutoFormat(Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic2);
}




//Este código crea una lista de dos registros y hace el llamando al método anterior. Este debe copiarse en el evento click del botón donde se desea hacer la exportación.
   var ListadoEmpleados = new List<Empleados>
    {
    new Empleados {
                    ID = 345678,
                    Nombre = "Luis Manuel Calderón Molina",
                    Salario = 1500.35
                    },
     
    new Empleados {
                    ID = 1230221,
                    Nombre = "Miriam Scarleth Moreno López",
                    Salario = 1200
                  }
    };
    DisplayInExcel(ListadoEmpleados);

Puedes descargar el código fuente completo en el siguiente enlace:

https://bit.ly/2VzlXbk


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Master Solutions