2016-09-15 93 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