ADO - 如何从xls文件中选择两列或多列具有相同名称的列?

时间:2013-08-21 14:32:53

标签: sql excel connection-string ado

我有一个像这样的excel文件:

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

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

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

目前我的选择如下:

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

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

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

1 个答案:

答案 0 :(得分:3)

您需要更改连接字符串,以便不使用数据标题名称。正常的连接字符串看起来像这样:

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

您需要将最后一位HDR=YES更改为HDR=NO

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

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

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