2017-03-14 1 views
0

큰 EXCEL 파일을 여는 데 문제가 있습니다. 예를 들어 XLWorkbook을 선언하면 모든 데이터가이 개체로로드됩니다. 나는 그것을 부분적으로 읽기로 결정했다. 왜냐하면 그것은 오류를 반환하기 때문이다 : outOfMemory. 범위가있는 부분을 읽을 수 있습니까? 더 이상 방법이 있습니까?매우 큰 엑셀 파일 (> 500000 레코드)의 워크 시트의 일부를 closedXml을 통해 읽을 수 있습니까?

샘플 :

using ClosedXML.Excel;   
public void FileOpen(string path) 
{ 
    var workBook = new XLWorkbook(path); 
// . . . 
} 
+0

이 방법을 활용할 수 있도록 interop을 사용하십시오. http : //stackoverflow.com/q/356371/495455 –

+0

이 문제를 해결하는 것은 좋지 않습니다. 우리는 Office 제품을 가지고 있지 않습니다. –

+0

@JeremyThompson 그건 아주 나쁜 아이디어입니다. xlsx 형식은 데스크톱이나 서버에 Excel을 설치하지 않아도되므로 * 만들었습니다. –

답변

0

당신은 행의 지정된 범위를 선택하는 것이 늙은 'OleDbAdapter를 사용할 수 있습니다. 아래 예제에서 첫 번째 10,000 행 (시트 "Sheet1"에서)을 선택한 다음 Excel 파일에서 10,000 행의 다른 행을 선택합니다.

DataSet excelDataSet = new DataSet(); 
    using (OleDbConnection connection = new System.Data.OleDb.OleDbConnection(connectionString)) 
    { 
     connection.Open(); 
     OleDbDataAdapter cmd = new OleDbDataAdapter("select * from [Sheet1$1:10000]", connection); 
     cmd.Fill(excelDataSet); 

... 

     OleDbDataAdapter cmd = new OleDbDataAdapter("select * from [Sheet1$10000:20000]", connection); 
     connection.Close(); 
    } 
관련 문제