2012-09-01 29 views
0

我想導入具有動態列的Excel文件(列將根據文件的不同而不同)。
情況是
1.第一行中有表名和日期。
2.第二行包含列名
3.從第三行開始,它包含需要導入的數據。
4.此列(第二行標題)將根據表格而有所不同。
請參閱示例excel格式。從第三行導入Excel而不進行格式化

---------- 
Table Name     Exported Date: 09_01_2012 
---------- 
Col1 Col2 Col3 Col4  Col5    Col6 
---------- 
2  3  4  0  8/27/2012 13:04 0 
4  3  4as 0  8/27/2012 13:04 0 
8  3  aas 0  8/27/2012 13:04 3 
---------- 

我想獲得具體基於行號。意味着我想拆分標題行和數據行。並根據列名稱(第二行)將數據行保存到數據庫中。

回答

0

我有同樣的問題,我已部分解決。列的順序對此很重要。
如果第一行是一個首部,各列可以容易地作爲SQL進口,並且可以是任何順序:

SELECT Col1 AS [DBCol1], 
Col2 AS [DBCol2], 
Col3 AS [DBCol3], 
Col4 AS [DBCol4], 
Col5 AS [DBCol5], 
Col6 AS [DBCol6] 
FROM SheetName$ 

以及如果第一行不是首部中的列的順序是重要的。它可以從SQL導入爲:

SELECT F1 AS [DBCol1], 
F2 AS [DBCol2], 
F3 AS [DBCol3], 
F4 AS [DBCol4], 
F5 AS [DBCol5], 
F6 AS [DBCol6] 
FROM SheetName$ 
WHERE F2 IS NOT NULL AND F3 IS NOT NULL AND F1 <> 'Col1' 

請注意列名稱的區別。我遇到的問題是獲得第二個導入沒有錯誤。 第一個導入是使用第一行作爲標題,第二個不是。第二個工作的重要之處在於你已經知道空列和頭的第一列是一個固定的名字。您可以嘗試使用文件命名約定來更改數據指向的表。
編輯:Importing from Excel - Header is not on row 1

SELECT F1 AS [DBCol1], 
F2 AS [DBCol2], 
F3 AS [DBCol3], 
F4 AS [DBCol4], 
F5 AS [DBCol5], 
F6 AS [DBCol6] 
FROM [SheetName$A3:G65536] 


編輯找到了答案:我終於找到了我所需要的答案。
首先 - 我的整個問題發生是因爲電子表格的第一行不是標題。
我所遇到的問題不得不與第一列必須僅爲文本。沒有混合的數據類型。第一列中的任何數據必須被強制爲通過預撇號(')到任何數字單元格的文本。如果標題行是第一行,並且「第一行是標題」複選框已被選中,則這不是必需的。解決方案的許多其他部分也是必需的。 「WHERE」子句是必要的,但是數組選擇(A3:G65536)不是。

相關問題