C# 我提供了使用Oledb处理大型excel文件的帮助和建议

C# 我提供了使用Oledb处理大型excel文件的帮助和建议,c#,buffer,oledb,oledbconnection,C#,Buffer,Oledb,Oledbconnection,所以我是Oledb新手,我有一个项目需要我使用控制台应用程序从excel文件中获取数据。excel文件大约有500列和55行。我怎么可能从超过255列的列中获取数据?要读取256列->只需修改Select语句即可。默认情况下,Microsoft.ACE.OLEDB.12.0和Microsoft.Jet.OLEDB.4.0驱动程序都将从第1-255列(A->IU)中读取,但您可以通过在Select语句中指定其余列来要求其读取 要阅读接下来的255列并将“Sheet1”作为工作表名称,您需要指定 S

所以我是Oledb新手,我有一个项目需要我使用控制台应用程序从excel文件中获取数据。excel文件大约有500列和55行。我怎么可能从超过255列的列中获取数据?

要读取256列->只需修改Select语句即可。默认情况下,Microsoft.ACE.OLEDB.12.0和Microsoft.Jet.OLEDB.4.0驱动程序都将从第1-255列(A->IU)中读取,但您可以通过在Select语句中指定其余列来要求其读取

要阅读接下来的255列并将“Sheet1”作为工作表名称,您需要指定

Select * From [Sheet1$IV:SP]
即使没有其他255列,这也会起作用。如果有1…255个额外的列,它将只返回下一个列块

顺便说一句,Microsoft.ACE.OLEDB.12.0驱动程序将读取.xls和.xlsx、.xlsm等的任何变体,而不更改“Excel 12.0”的扩展属性。不需要根据文件类型选择if…then…else连接字符串


OLEDB驱动程序在大多数情况下都很好,但它确实依赖于格式良好的表单。混合数据类型处理得不是很好,如果第一列/行是空的,它会做一些奇怪的事情,但除此之外,它也可以。我大量使用它

您需要使用ACE驱动程序(而不是Jet)来获取超过255列,并且工作簿需要是xlsx。Excel 2007使用Jet升级Excel以获得Excel 2003不支持的255个以上的列。查看OpenXml(它是一个NuGet软件包),避免使用OleDb和ACE驱动程序。它可以读取非常大的Excel文件。我使用了4gb excel文件,没有任何问题。谢谢Jimmy,我会尝试一下。它看起来更有希望,因为我不知道为什么这一点被否决了。对我来说,这似乎是一个完全合理的问题。