[英]OleDb Excel join with unnamed columns from c#
我正在嘗試使用ACE.OleDb在兩張紙之間執行連接。 列是未命名的,因此我不能在ON條件下使用列的名稱。
使用的ConnectionString是:
String.Format("Provider = {0}; Data Source = {1}; Extended Properties = \"{2}\" ", "Microsoft.ACE.OLEDB.12.0", file, "Excel 8.0;HDR=YES");
使用命名列,這樣的效果很好:
select * from [sheet1$] inner join [sheet2$] on [sheet1$].[ID] = [sheet2$].[ID]
¿沒有命名列ID的任何方法? 當然我知道該列的索引,它將永遠是第一個。
我嘗試過類似的嘗試,但沒有成功:
select * from [sheet1$] inner join [sheet2$] on [sheet1$].[$A] = [sheet2$].[$A]
結果是:
Syntax error in JOIN operation
要使用未命名的列,必須在連接HDR=NO
中設置HDR=NO
。
“ Provider = Microsoft.ACE.OLEDB.12.0;數據源= D:\\ myfile.xlsx;擴展屬性= \\” Excel 12.0 Xml; HDR = NO \\“
使用此設置,每一列都會獲得諸如F1,F2,F3之類的名稱。
您可以像這樣使用它們:
select * from [sheet1$] inner join [sheet2$] on [sheet1$].[F1] = [sheet2$].[F2]
列的自動命名是指您用作表的列。 因此,如果您說select * from [sheet1$B1] ...
B
列將作為F1
可用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.