2016-11-30 4 views
1

複数のワークシートを持つ1つのExcelドキュメントがあります。C#でExcelファイルの一部を縮小データセットに変換するにはどうすればよいですか?

私がアップロードされ、以下のコードを使用してDataTableオブジェクトにファイルを変換した:100000行が利用可能な場合に

FileStream stream = File.Open(SourceUpload.Fullpath, FileMode.Open, FileAccess.Read); 
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //xlsx file format 
ds = excelReader.AsDataSet(); 

このコードは、ファイル全体を変換しますが、私はこれのサブセットが含まれているためにDataSetをしたいですデータ(1000行と1000列)。

これは可能ですか?どのようにすればいいですか?

+0

ODBC接続を使用してExcelファイルをDataSetにインポートするときに、SQLを使用してデータのサブセットを選択する方法があります。これはおそらくあなたにとって理想的な解決策です。あなたのために解決策が見つかるかどうかを調べるためにコードベースを見ていきます。その間、複数のワークシートを含むExcelファイルの例と、結果として得られるデータセットをどのように表示するかの例を提供できますか? –

答えて

0

Linqを利用すると、これを実現できます。だから何かのように:

DataTable dt = //get data from excel or wherever 
IEnumerable<DataRow> data = dt.AsEnumerable().Select(a => a).Take(1000);//Select everything but only take the top 1000 records 
DataTable someTable = data.CopyToDataTable(); //copy the data 

//finally add it to our data set 
DataSet ds = new DataSet(); 
ds.Tables.Add(someTable); 

上記のスニペットは私の頭の上からであり、私はそれをテストしていないことに注意してください。

+0

上記のcode.iには、変換があり、5laksh行以上の例外が発生した場合、例外が発生します。 'System.OutOfMemoryException'型の例外がスローされました。 – RajaGanapathy

+0

@ RajaGanapathyあなたのExcelファイルの様子のサンプルを提供できますか? – Izzy

関連する問題