2016-09-15 177 views
2

我试图用EPPLUS在c#中将列表导出到Excel中,当我执行程序时不给我错误,但是当我打开Excel时,我看到的不是正确的数据,他把谟+对象的名称的名称多次对象有列表: enter image description here从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我可以看到列表中正确填写:

enter image description here

所以,我认为错误是,当我尝试将数据导出到Excel中,与LoadFromCollection方法,但我不能说出了什么问题,请帮忙。

回答

3

您使用的是什么版本的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; } 
} 

你应该看到的结果。

+0

谢谢,你是对的,我不知道为什么我不把{get; set}我总是这样做。 EPPLUS的版本是4.0.4.0 – Ion

+0

@Ion,没什么大不了的,有时我们都会发生:)。有趣的是,版本4.0.4不引发异常。 4.1确实更好,至少你知道在测试中出了问题。 – Ernie