从EPPLUS列表导出到Excel列表
问题描述:
我试图用EPPLUS在c#中将列表导出到Excel中,当我执行程序时不给我错误,但是当我打开Excel时,我看到的不是正确的数据,他把谟+对象的名称的名称多次对象有列表: 从EPPLUS列表导出到Excel列表
对象的代码:
class Stock
{
public string Nif;
public string Proveedor;
public string Coodigo;
public string descripcion;
public string Catalogo;
public string Estadistico;
public decimal StockOn;
}
当THES列表(lstStock )填写我创建一个Excel并使用选项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);
}
的cuestión是,当我在VisualStudio中调试aplication我可以看到列表中正确填写:
所以,我认为错误是,当我尝试将数据导出到Excel中,与LoadFromCollection方法,但我不能说出了什么问题,请帮忙。
答
您使用的是什么版本的EPPlus?我问,因为我很惊讶它不会像当前最新的4.1.0那样引发错误。也许一个老版本更宽容。
但是,为了回答你的问题,如果你看的LoadFromCollection
最终重载最终叫你会看到这个签名:
public ExcelRangeBase LoadFromCollection<T>(IEnumerable<T> Collection, bool PrintHeaders, TableStyles TableStyle, BindingFlags memberFlags, MemberInfo[] Members)
注意Epplus只看着MemberInfos
而不是Fields
这是你反对使用的。如果更改Stock
对象是:
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; }
}
你应该看到的结果。
谢谢,你是对的,我不知道为什么我不把{get; set}我总是这样做。 EPPLUS的版本是4.0.4.0 – Ion
@Ion,没什么大不了的,有时我们都会发生:)。有趣的是,版本4.0.4不引发异常。 4.1确实更好,至少你知道在测试中出了问题。 – Ernie