0

ここに画像の説明を入力 私の現在の要件は、1 つのクエリで Excel シート (DUMMY.xls) から複数の範囲を選択し、それを DataTable(fooData1) に入れる必要があることです。上の画像からわかるように、A から F までの列があります。 A から B および D から F までの列を単一の dataTable(fooData1) にフィルター処理しています。結果のデータテーブルの内容は次のようになります。

NAME    ID     Date     Hobby     COLOR
DEEPAK  1               Coding    Black
ASTHA   2               Singing   Red
GAURAV  3               Dancing   Blue
BHAVESH 4     6/29/2007 Painting  Green

私のコードは次のようになります:

クエリの実行中に次のエラーが発生します

「SQL ステートメントの終了後に文字が見つかりました。」

     DataTable fooData1 = new DataTable();
                       System.Data.OleDb.OleDbConnection dbConnection =
              new System.Data.OleDb.OleDbConnection
                (@"Provider=Microsoft.Jet.OLEDB.4.0;"
                 + @"Data Source=C:\Dummy.xls;"
                 + @"Extended Properties=""Excel 8.0;HDR=Yes;""");
            dbConnection.Open();
            try
            {
                string strSql = "SELECT * FROM [Sheet1$A:B] ; select * from[Sheet1$D:F]";
                OleDbCommand cmd = new OleDbCommand(strSql);
                cmd.Connection = dbConnection;
                System.Data.OleDb.OleDbDataAdapter dbAdapter1 = new System.Data.OleDb.OleDbDataAdapter(cmd);                       
                dbAdapter1.Fill(fooData1);
                          }
            finally
            {
                dbConnection.Close();
            }
4

2 に答える 2

2

SQLで解決できます。を使用してUNION ALLください。

SELECT * FROM [Sheet1$A:B] UNION ALL select * from[Sheet1$E:F]

私は次のようなテストデータを作成しました:

1   2   3   4   5   6
1   2   3   4   5   6
1   2   3   4   5   6

そしてDataTableは以下を取得しました:

1   2   
1   2   
5   6
5   6

(で特定のオプションなのでHDR=Yes、最初の行はヘッダーです)

それがあなたの問題を解決できることを願っています。:)

于 2012-08-29T03:04:49.320 に答える