2017-04-21 17 views
0

私は過去にデータテーブルやデータセットからループを起こさずに非常に高速になるようにclosedXMLを使用しました。今度は別の方法をとる必要がありますが、クローズドなXMlやその他のものからエクセルからデータテーブルへの唯一のドキュメントはループすることです。私は現在の速度の要求、大量のデータが卓越していること、そして誰もがループするよりも速い方法を見つけ出していない、Officeの普及により想像することはできません。closedxmlからループなしのデータテーブル

閉鎖されたXMLや、データセットなどの他のsystem.dataオブジェクトに素早く移行する方法がありますか?

+0

私はClosedXMLの内部のループがあると確信しています。たとえそれがあなたから抽象化されていても、それは避けられないと私は思います。 – Crowcoder

+0

なぜ最初にループを避けたいのですか? – C1rdec

+0

ルーピングは非常に遅い – davidp04

答えて

0

あなたはDataTableにワークシートからデータを読み取るために、プレーンのOLE DB接続を使用することができます。

string strExcelConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\filename.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES;'"; 
using (OleDbConnection connExcel = new OleDbConnection(strExcelConn)) 
{ 
    string selectString = "SELECT * FROM [CA$A1:D500]"; 
    using (OleDbCommand cmdExcel = new OleDbCommand(selectString,connExcel)) 
    { 
     cmdExcel.Connection = connExcel; 
     connExcel.Open(); 
     DataTable dt=new DataTable();      
     OleDbDataAdapter adp = new OleDbDataAdapter(); 
     adp.SelectCommand = cmdExcel; 
     adp.FillSchema(dt, SchemaType.Source); 
     adp.Fill(dt); 
     int range=dt.Columns.Count; 
     int row = dt.Rows.Count; 
    } 
} 
+0

が動作します、ありがとう – davidp04

関連する問題