Sql ACE.OLEDB.12查询Excel数据表的替代方案

Sql ACE.OLEDB.12查询Excel数据表的替代方案,sql,excel,vba,oledb,aceoledb,Sql,Excel,Vba,Oledb,Aceoledb,我目前正在使用ACE.OLEDB.12查询Excel数据表,我遇到了一个令人沮丧的提供程序限制。提供程序只能寻址前256列和65536行,因此如果我将任何数据表定位在该窗口之外,引擎将返回一条错误消息range not found 是否有人知道有任何其他数据提供者允许我使用ACE.OLEDB.12直接从数据表(如下面的示例)查询数据 SELECT * FROM [Main Sheet$IG7:IU9] 我一直在使用ADODB,并且有同样的问题。到处寻找答案,甚至连运气都没有 我发现的唯一的解决

我目前正在使用
ACE.OLEDB.12
查询Excel数据表,我遇到了一个令人沮丧的提供程序限制。提供程序只能寻址前256列和65536行,因此如果我将任何数据表定位在该窗口之外,引擎将返回一条错误消息range not found

是否有人知道有任何其他数据提供者允许我使用
ACE.OLEDB.12
直接从数据表(如下面的示例)查询数据

SELECT * FROM [Main Sheet$IG7:IU9]

我一直在使用ADODB,并且有同样的问题。到处寻找答案,甚至连运气都没有


我发现的唯一的解决方法是:将数据移到工作表的开头。如果您的数据从
A1
开始,例如
Sheet1
,则只要您仅引用该工作表,您的查询将引入额外的行和列,即
从[Sheet1$]中选择*
。我没有用
ACE.OLEDB
测试过这一点,但它确实可以用
ADODB

来查询XLSX文件。当然,它不提供任何SQL功能(相反,它的行为类似于VBA),但其优点是,目标计算机上不需要安装Excel或AccessDatabaseEngine。也许值得一看。

奇怪的是,Excel中有这么大的数据集。您是否可以选择以不同格式(即文本分隔或CSV)加载数据。还要注意的是,XLSX只是一个压缩的XML文件,因此您可以自己尝试获取数据。我可以使用VBA读取数据,但我更喜欢SQL路径更干净。我很好奇,是什么样的系统将大量数据存储在Excel文件中?Excel只是一种传递数据的方式,还是您实际上在其中存储了那么多数据?如果将Excel用作传输格式,则会有许多其他问题。文本更干净。我们为呼叫中心做了大量数据预处理,因此不可避免地使用了大量数据。在使用数据库方面存在客户端限制和限制,因此我们在Excel中构建导入和预处理向导。我只能建议您将Excel文件保存为CSV,然后导入该文件。我认为如果我继续使用代码查询数据,那么我还可以使用VBA。SQL在数据处理方面功能更强大。对不起,我完全忽略了VBA标记。如果你是在Excel中工作,我的答案没有任何用处。我知道,告诉我吧。一段时间以来,我一直在努力寻找解决这个问题的办法。微软还没有解决这个问题,我们仍在苦苦挣扎,这是一种耻辱。我无法将数据放在工作表的开头,因为工作表中充满了表格。我可以处理多个工作表中的列,但不能处理行。最后一种方法是将数据复制到新的工作表中并进行查询。但这会影响性能,因为您的数据可能相当大。从性能角度看,这并不太糟糕。查询实际上运行得非常快。问题是行数可能超过65536。如果出现这种情况,OLEDB提供程序会说它再也找不到表了,因为它只处理前256x65536,基本上是旧的Excel限制。这不是我所说的性能命中。我的意思是,如果您的数据不是从
A1
开始,您可以将数据复制到新的工作表中,使其从
A1
开始,查询该数据,然后删除临时工作表。