2013-08-21 19 views
3

我有一個Excel文件這樣的:ADO - 如何從xls文件中選擇兩列或更多列具有相同名稱的列?

| | 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拿起從列其下B列在Excel中列出的數據。換句話說,它需要具有給定名稱的第一列。不幸的是,我有兩個同名的列,我想從列D中提取數據。可能嗎?

我找不到任何方式來選擇列的索引而不是名稱。

回答

2

您將需要更改連接字符串,以便不使用數據標題名稱。正常的連接字符串會是這個樣子:

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等

這不是理想的,因爲你現在基本上是根據列的數量運行查詢,而不是名稱,但是具有重複的列名稱,這是唯一的解決方法。

+0

謝謝,這應該足夠:) – Wodzu

+0

這將導致工作表的第1行中的值被視爲可能或可能不成爲問題的數據,具體取決於您如何使用數據 – barrowc

相關問題