Importar Excel a un listado con C# y Exportable

Hola, en entradas anteriores les hablábamos sobre como usar Exportable para guardar listados en archivos Excel. Si quieres ver como instalarlo, puedes ver el siguiente link. Si deseas ver como exportar un listado simple, puedes ver el siguiente link

Hoy, gracias a una actualización disponible en NUGET y GitHub, es también posible leer archivos Excel a un listado, de forma muy similar a como funciona el proceso de exportación.

Supongamos que tenemos el siguiente archivo Excel:

exportable-archivo-excel

 

Entonces, la manera más fácil de leerlo, será crear la siguiente clase, en donde cada propiedad representa una columna del archivo Excel:


internal class DummyPerson
{
public string Name { get; set; }
public DateTime BirthDate { get; set; }
public int Age { get; set; }
public bool IsAdult { get; set; }
}

 

Luego, con las siguientes líneas de código, podremos leer el archivo en un listado de DummyPerson:


public void SomeMethod()
{
IImportEngine engine = new ExcelImportEngine();
(engine as IExcelImportEngine).AddContainer<DummyPerson>("1", "Dummy People", 1);
(engine as IExcelImportEngine).SetFormat(ExcelVersion.XLS);
engine.SetDocument("/Files/SomeFile.xlsx");
IList<DummyPerson> data = engine.GetList<DummyPerson>("1");
}

 

Algunos puntos interesantes:

  • Existen dos interfaces: IImportEngine y IExcelImportEngine. Esto se debe a que en un futuro implementaremos otros formatos, como CSV; y cada uno de ellos tiene características únicas, las cuales serán expuestas por medio de estas interfaces.
  • Para establecer el formato del documento Excel a leer, se debe usar la interfaz  IExcelImportEngine; más en este ejemplo no es necesario, dado que por defecto, se asume que el archivo tiene formato XLSX
  • El método AddContainer actúa como un diccionario, que permite establecer distintas listas para cada hoja del documento. Los parámetros de entrada, para este ejemplo, son:
    • key: Valor único e irrepetible, que permite identificar los valores del diccionario
    • sheetName: Nombre exacto de la hoja a leer
    • firstRowWithData: Primera fila que contiene valores mapeables a la lista. Es zero-based, por lo cual el valor 0, indica la fila 1 del archivo Excel.
  • El método GetList requiere que se especifique que contenedor se utilizará, por lo cual se debe entregar el “key” utilizado en el método AddContainer.

Como siempre, quedamos atentos a sus comentarios, sugerencias o dudas. No dejen de escribirnos!!! 🙂

Infodinamica es una empresa de Desarrollo de Software especialista en soluciones .NET, fundada en 2014, con la finalidad de ofrecer servicios integrales e innovadores a las pequeñas y medianas empresas. Si deseas contactarnos, puedes escribirnos un correo a contacto@infodinamica.cl o llamándonos a nuestro teléfono +56979962612

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *