【问题标题】:ADO - how to select column from xls file where two or more columns have the same name?ADO - 如何从两个或多个列具有相同名称的 xls 文件中选择列?
【发布时间】:2013-08-21 14:32:52
【问题描述】:

我有一个这样的 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 从列在 excel 中的列 B 下的列中获取数据。换句话说,它采用具有给定名称的第一列。不幸的是,我有两列同名,我想从列D 中提取数据。可能吗?

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

【问题讨论】:

    标签: sql excel connection-string ado


    【解决方案1】:

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

    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 的评论:这种格式的连接字符串会将您的列名视为数据。因此,根据您的查询,您可能需要包含代码以过滤掉包含您的列名的行。

    【讨论】:

    • 谢谢,应该够了:)
    • 这将导致工作表第 1 行中的值被视为数据,根据您使用数据的方式可能会或可能不会成为问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2019-02-10
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    相关资源
    最近更新 更多