我有一个像这样的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
中提取数据。可能吗?
我找不到任何方法来通过索引而不是名称来选择列。
答案 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
。
使用这种类型的连接,列(字段)将变为F1
,F2
等,其中F1
=列A,F2
=列B,等
这并不理想,因为您现在基本上是根据列的数量而不是名称来运行查询,但是使用重复的列名称,这是解决此问题的唯一方法。
根据@barrowc的评论:此连接字符串格式会将您的列名称视为数据。因此,根据您的查询,您可能需要包含代码以过滤掉包含列名称的行。