2012-04-10 6 views
1

ExcelをDataTableにインポートしています。 Excelファイルには50x7個のセルが含まれています。 問題は、Fill()メソッドは、データが最初の50行にあるかどうかにかかわらず、368(?)行をインポートすることです。どのようなアイデアが問題だろうか?OleDbDataAdapterさらに多くの行をインポートするFillメソッド

私はOleDbDataAdapterをインポートに使用しています。

connectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Extended Properties=Excel 8.0;"; 
string commandString = "select * from [" + worksheetName + "]"; 
OleDbDataAdapter adapter = new OleDbDataAdapter(commandString, connectionString); 
DataTable fileTable = new DataTable(); 
adapter.Fill(fileTable); 
+0

51から369までの行を削除しようとしましたか。 Excelワークシートで、これが問題を解決するかどうかを確認します。 –

+0

Excelで行を削除するとはどういう意味ですか?空白の行があり、ファイル内をスクロールすると、さらに多くの行が表示されます。私は彼らが本物のファイルにいるとは思わない。もし私が間違っていれば私を訂正してください –

+1

Excelのシートにも同様の問題がありました。行には何もないように見えますが、何らかの理由でインポート時にその行為を受けます。削除するものがないように見えますが、常に試してみる価値があります。 –

答えて

1

DataTableから空のセルを削除するには、これを試してみてください:それは、シート内の空の行を削除し

adapter.Fill(fileTable); 
fileTable = fileTable.AsEnumerable() 
      .Where(row => !row.ItemArray.All(f => f is System.DBNull || String.IsNullOrWhiteSpace(f.ToString()))) 
      .CopyToDataTable(); 

注こと。

+0

'System.Data.DataTable'に 'AsEnumerable'の定義が含まれず、拡張メソッド 'AsEnumerable'が 'System'型の最初の引数を受け入れません。 Data.DataTable 'が見つかりました(usingディレクティブまたはアセンブリ参照がありませんか?) –

+0

.NET 2.0以下を使用している場合は、LINQを使用できません。その後、OleDbCommandのリーダーを介してDataTableを手動で構築することができます。 –

+0

いいえ、NET 4.0を使用しています –

関連する問題