2017-03-10 17 views
0

xlsx로 내보내기 데이터 집합에 문제가 있습니다. 내 코드 :큰 (> 500000 행) 데이터 집합을 xlsx로 내보내기

DataSet freeTable = new DataSet(); 
freeTable = FoxDal.Instance.freeTable; 
XLWorkbook wb = new XLWorkbook(); 
wb.Worksheets.Add(freeTable.Tables[0], "sheet1"); 
wb.SaveAs(@"E:\test5.xlsx"); 

내가 던져 예외 System.OutOfMemoryException VS를 선택 해달라고하면 나에게 프롬프트 (XLReentrantEnumerableSet.cs 여기서 나 한테 물어)주고의 VS 코드를 실행하는 동안. 메신저는 ClosedXML을 사용합니다. 이 프레임 워크에 첨부 된 라이브러리가 있습니까? 작은 테이블을 사용하면 코드가 핵심적으로 작동합니다.

+0

... – DavidG

+0

내 말은 죄송 500000 – P10trek

+0

당신은 소스가 다음 FoxPro에 테이블을 전송하는 가장 빠른 방법임을 의미하는 여우 프로 태그가있는 경우 Excel 로의 데이터는 Excel의 QueryTables.Add를 사용하는 것입니다. 두 번째 옵션은 Excel의 CopyFormRecordset을 사용하여 데이터를 전송하는 것입니다. EPPLus는 느리지 만 작동합니다. –

답변

0

프레임 워크를 EPPlus로 변경하면 큰 파일을 변환 할 수 있습니다. 내 새로운 코드 :

 DataSet freeTable = new DataSet(); 
     freeTable = FoxDal.Instance.freeTable; 
     FileInfo fileInfo = new FileInfo(@"E:\Test.xlsx"); 
     using (ExcelPackage pck = new ExcelPackage()) 
     { 
      ExcelWorksheet ws = pck.Workbook.Worksheets.Add("table"); 
      ws.Cells["A1"].LoadFromDataTable(freeTable.Tables[0], true); 
      pck.SaveAs(fileInfo); 
     } 
Excel이 단지 약 100 만 행을 처리 할 수 ​​