c# excel list sql-server-2008 epplus

c# - exportar a Excel desde una lista con EPPLUS



sql-server-2008 (1)

Estoy tratando de exportar una lista a Excel en C # con EPPLUS, cuando ejecuto el programa no me da errores, pero cuando abro el Excel veo que no son los datos correctos, puso el nombre del proyecto + el nombre del objeto tantas veces como los objetos tienen la lista:

El código del objeto:

class Stock { public string Nif; public string Proveedor; public string Coodigo; public string descripcion; public string Catalogo; public string Estadistico; public decimal StockOn; }

y cuando se completa esta lista (lstStock), creo un Excel y uso la opción loadfromcollection:

System.IO.FileInfo f = new System.IO.FileInfo("D://stock_termos.xlsx"); if (f.Exists) f.Delete(); using (ExcelPackage ep = new ExcelPackage(f)) { ExcelWorksheet hoja = ep.Workbook.Worksheets.Add("TOTAL OBSOLETOS"); hoja.Cells[1, 1].Value = "NIF"; ; hoja.Cells[1, 2].Value = "Proveedor"; hoja.Cells[1, 3].Value = "Código"; hoja.Cells[1, 4].Value = "Descripción"; hoja.Cells[1, 5].Value = "Catálogo"; hoja.Cells[1, 6].Value = "Cod.Estadístico"; hoja.Cells[1, 7].Value = "Stock On"; hoja.Cells[2, 1].LoadFromCollection(lstStock); }

La cuestión es que cuando depuro la aplicación en VisualStudio puedo ver que la lista se llena correctamente:

Así que creo que el error es cuando intento exportar los datos a Excel, con el método LoadFromCollection, pero no puedo ver qué está mal, por favor ayuda.


¿Qué versión de EPPlus estás usando? Pregunto porque me sorprende que no arroje un error como lo hace con 4.1.0, que actualmente es la última. Quizás una versión anterior sea más indulgente.

Pero para responder a su pregunta, si mira la firma de la sobrecarga final de LoadFromCollection que finalmente se llama, verá esto:

public ExcelRangeBase LoadFromCollection<T>(IEnumerable<T> Collection, bool PrintHeaders, TableStyles TableStyle, BindingFlags memberFlags, MemberInfo[] Members)

Tenga en cuenta que Epplus solo está mirando MemberInfos y no Fields que es lo que está MemberInfos . Si cambia el objeto Stock a esto:

class Stock { public string Nif { get; set; } public string Proveedor { get; set; } public string Coodigo { get; set; } public string descripcion { get; set; } public string Catalogo { get; set; } public string Estadistico { get; set; } public decimal StockOn { get; set; } }

Deberías ver los resultados.