Excel (.xlsx, .xls) 파일을 읽는 응용 프로그램을 빌드하려고합니다. 불행히도 OleDbDataAdapter.Fill() 성능은 놀랍게도 좋지 않습니다. 파일에서 한 레코드를 읽는 데 최대 2 분이 걸립니다. 2백57메가바이트 OleDbDataAdapter.Fill()이 매우 느린 이유는 무엇입니까?
코드
- 크기 : 파일에 대한
더 많은 정보
string conStr = string.Empty; string strQuery = string.Empty; switch (extension) { case ".xls": //Excel 97-03 conStr = @"Provider=Microsoft.Jet.OleDb.12.0;Data Source=" + file_source + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';"; strQuery = "SELECT " + col_no + " * FROM [" + workbook + "] "; break; case ".xlsx": //Excel 07 //connection string to connect to the xlsx file conStr = @"Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + file_source + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;';"; strQuery = "SELECT " + col_no + " * FROM [" + workbook + "] "; break; } DataTable tbl = new DataTable(); OleDbDataAdapter ada = new OleDbDataAdapter(strQuery, conStr); ada.Fill(tbl); ada.Dispose(); return tbl;
귀하의 도움이 될 것입니다. 대단히 감사합니다!
감사합니다.
일부 대안은 여기에서 얻을 수 있습니다 : http://stackoverflow.com/questions/15828/reading-excel-files-from-c-sharp 거대한 데이터 세트를위한 데이터베이스로 Excel을 사용하는 @semao가 지적한 것처럼 매우 성능이 뛰어난 솔루션이 아닙니다. 예 : XLSX 파일의 경우 파일을 압축 해제하고 메모리에로드하고 인덱싱 한 다음 쿼리 할 수 있어야합니다. 빠른 랜덤 액세스에 적합한 파일 형식이 아닙니다. – xmojmr