我目前正在使用ACE.OLEDB.12
查询Excel数据表,但我遇到了提供者的限制,这令人沮丧。提供程序只能寻址前256列和65536行,因此,如果我将任何数据表放置在该窗口之外,引擎会返回一条错误消息,即未找到范围。
有人知道有其他数据提供程序允许我使用ACE.OLEDB.12
直接从数据表中查询数据吗?
SELECT * FROM [Main Sheet$IG7:IU9]
我一直在使用ADODB
,并且有相同的问题。到处寻找答案,即使在SO上,也没有运气。
我找到的唯一解决方法是:将数据移动到工作表的开头。如果您的数据从A1
开始,例如Sheet1
,那么只要您仅引用工作表,即SELECT * FROM [Sheet1$]
,您的查询就会拉入额外的行和列。我还没有用ACE.OLEDB
测试过这个,但它确实可以用ADODB
。
您可以使用ClosedXML查询XLSX文件。当然,它不提供任何SQL功能(相反,它的行为类似于VBA),但其优点是Excel和AccessDatabaseEngine都不需要安装在目标计算机上。也许值得一看。