0

在此处输入图像描述 我目前的要求是我需要在单个查询中从 excel 表(DUMMY.xls)中选择多个范围并将其放入 DataTable(fooData1)中:正如您从上图中看到的那样,我有从 A 到 F 的列。因此我将从 A 到 B 和从 D 到 F 的列过滤到单个数据表(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 回答
0

嘿,至于您的问题,您可以使用 F 和列号选择各个列。例如,“SELECT * FROM [Sheet1$A:B] ; select * from[Sheet1$D:F]”; 可以重写为:

"SELECT F1,F2,F4,F5 FROM [Sheet1$];"
于 2017-06-07T13:22:04.563 回答