2011-04-14 4 views
0

수천 개의 행이있는 테이블이 있지만 1000 개의 행 (및 10 개의 열)을 읽으려고해도 결과를 얻으려면 약 10 초가 걸립니다. 나는 그것이 너무 느리다라고 생각한다. 그러나 나는 어떤 문제도 발견 할 수 없다. 읽기 데이터OleDb - Excel에서 느린 읽기

코드 : 코드를 통해 스테핑

string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties="Excel 8.0;HDR=Yes;"", _excelFilename); 
using (OleDbConnection c = new OleDbConnection(connectionString)) { 
    c.Open(); 
    OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Trend_Data$A1:J1000]", c); 
    OleDbDataReader dbReader = dbCommand.ExecuteReader(); 

    while (dbReader.Read()) { 
     object[] values = new object[10]; 
     dbReader.GetValues(values); 

     //save values into internal structure - fast 
     ... 
    } 

나는가 ExecuteReader 함수를 호출하는 것은 너무 오래 걸리는 것으로 나타났다.

코드 속도를 높이는 방법에 대한 아이디어가 있습니까?

+1

파일이 로컬로 저장되어 있습니까? 공유 드라이브의 경우 실행 시간이 오래 걸릴 수 있습니다. – Juliusz

답변

1

시험해보십시오. OleDBAdapter Excel QA 스택 오버플로를 통해 게시했습니다.

이전 게시물에서 워크 시트를 가져 와서 열 (총 10 개)과 행 (총 10,000 개)을 추가하고 데이터로 포장했습니다 (Excel 파일은 1,770KB). Visual Studio 2010의 XP w/4 cpus를 사용하면 1 초도 걸리지 않습니다.

이 상단에 추가

Stopwatch queryWatch = new Stopwatch(); 
queryWatch.Start(); 

이를 바닥에 :

Console.WriteLine("Elapsed Query time: {0}.{1} seconds.", queryWatch.ElapsedMilliseconds/1000, queryWatch.ElapsedMilliseconds % 1000);  
Console.ReadLine(); 

출력 :

Elapsed Query time: 0.623 seconds.