2016-07-12 10 views
1
xlRangeDB = xlWorkSheetDB.get_Range("A2", "BA" + lRow.ToString()); 
       object[,] valueArray = xlRangeDB.Value2; 

       List<string> inputData = new List<string>(); 
       inputData.AddRange(valueArray); 

私はExcelの範囲(xlRangeDB)をリストに変換したいと思います。私は直感的な方法を見つけることができませんでしたので、まずexcel rangeをArrayに変換してListに追加しようとします。しかし、それはどちらもうまくいかない。 実際には200以上のExcelファイルがあり、各ファイルには70000行と70列が含まれています。これらのファイルからデータを収集する必要があります。この状況でループするには膨大な時間がかかります。何かアドバイス。あなたが本当にリストが必要な場合は、リストに変換おかげループのないリストにExcel範囲を追加する

+0

一度抽出したら、このデータをどこに置いていますか? –

+0

私は、データをスライスしてダイスし、それらの基準に基づいてさまざまなレポートのExcelファイルに戻します。 – AAP

+0

可能であれば、ストリーミングを見たいと思うでしょう。本当にメモリ使用量が高くなり、70000のテキスト行をすべてメモリに格納することになります。しかし、それはあなたの判断である。 –

答えて

0

だけobject[,]を使用するよりも遅くなりますが、 次のようになります。

var inputData = valueArray.Cast<object>().Select(Convert.ToString).ToList(); 

または

xlRangeDB.Copy(); // copies to the clipboard as TSV - rows separated by "\r\n" and cells separated by '\t' 
var inputData = System.Windows.Forms.Clipboard.GetText().Split('\n', '\r', '\t').ToList(); 

を相互運用Excelが通常です最も遅い Excelファイルを読む方法!あなたは

inputData.AddRange(valueArray.Cast<object>().Select(Convert.ToString)); 

更新

Optimal way to Read an Excel file (.xls/.xlsx)代わりにOLEDB DataReaderオブジェクトまたはExcelデータリーダーを試すことができますが、あなたの代わりに、ファイルやデータベースに値を保存する必要がありますので、あなたはおそらく、いくつかの点でメモリ不足になります。

+0

多くのおかげで、実際に私は200を保持することができる配列のサイズを知っていないファイルのデータをExcelします。サイズを変更し、オブジェクト[、]を使用して200回の配列にデータを追加するとわかりません。すべてのExcelファイルは(.xlsb)形式です。ご意見をお聞かせください。 – AAP

+0

これは完璧に機能しますが、データを保持し、多くのワークブックをループすることによって、データを保持する方法を教えてください。 – AAP

関連する問題