2016-09-15 2 views
2

나는 EPPLUS를 사용하여 C#에서 Excel로 목록을 내보내려고합니다. 프로그램을 실행할 때 오류가 없지만 Excel을 열 때 볼 수 없습니다. enter image description hereEPPLUS로 목록에서 Excel로 내보내기

개체의 코드 :

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

     } 

및 살전 목록 (lstStock 정확한 데이터는, 그와 같은 객체로 여러 번 목록을 가지고있는 인텔리 + 개체의 이름의 이름을 넣어) 채워집니다 나는 Excel을 만들고 loadfromcollection 옵션을 사용합니다 :

내가 Excel로 데이터를 내보낼 때

enter image description here

그래서 내가 함께 오류가 생각 :

 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을 디버깅 할 때 내가 목록이 제대로 채워 볼 수 있다는 것입니다 LoadFromCollection 메서드,하지만 내가 무엇을 잘못 할 수 없습니다, 제발 도와주세요.

답변

3

어떤 EPPlus 버전을 사용하고 있습니까? 내가 최근에 4.1.0에서했던 것처럼 오류를 던지지 않는다는 것에 놀랐기 때문에 나는 묻는다. 어쩌면 이전 버전이 더 관대합니다. Epplus 만 FieldsMemberInfos보고되지 않았

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

공지 사항 : 당신은 결국 당신이 볼 것이다라고 LoadFromCollection의 최종 과부하의 서명 보면 당신이 질문에 대답 할 수 있지만

당신이 반대하는 것은 당신이 사용하는 것입니다. 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의 versión은 4.0.4.0 – Ion

+0

입니다. @Ion,별로 중요하지 않으며, 때때로 우리 모두에게 일어납니다. :) 예외를 던지지 않는 버전 4.0.4에 흥미 롭습니다. 실제로 4.1보다 나은 점은 적어도 테스트에서 어떤 것이 잘못되었다는 것을 알고 있다는 것입니다. – Ernie