4

我有一个这样的excel文件:

|   |    A   |    B    |    C    |   D    |
| 1 | Name 1 |  Name 2 |  Name 3 | Name 2 |
| 2 |  Data  |  Data   |  Data   | Data   |
| 3 |  Data  |  Data   |  Data   | Data   |

如您所见,两列的标题具有相同的名称 - Name 2

我的问题是,是否可以告诉 ADO 引擎从哪一列中选择数据?

目前我的选择如下所示:

SELECT [Name 1], [Name 2] FROM [REPORT7_RAW$] WHERE [Name 1] IS NOT NULL

ADO 从列B在 excel 列下的列中获取数据。换句话说,它采用具有给定名称的第一列。不幸的是,我有两列同名,我想从 column 中提取数据D。是否可以?

我找不到任何方法来通过索引而不是名称来选择列。

4

1 回答 1

4

您将需要更改连接字符串,以便不使用数据头名称。正常的连接字符串如下所示:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties="Excel 12.0 Xml;HDR=YES";

您需要将最后一位 , 更改HDR=YESHDR=NO

使用这种类型的连接,列(字段)然后变为F1F2等,其中F1= 列 A、F2= 列 B 等。

这并不理想,因为您现在基本上是根据列号而不是名称来运行查询,但是列名重复,这是唯一的解决方法。

根据@barrowc 的评论:这种格式的连接字符串会将您的列名视为数据。因此,根据您的查询,您可能需要包含代码来过滤掉包含您的列名的行。

于 2013-08-21T14:46:34.297 回答