OleDb Excel与c#中的未命名列联接
本文关键字:未命名 Excel OleDb | 更新日期: 2023-09-27 18:27:12
我正试图使用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
。
"提供程序=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
可用