Vidual Studio 2017 C#System.Data.OleDb无法读取较新的Excel文件

问题描述 投票:1回答:1

我使用Visual Studio Professional 2017(15.9.16和.NET Framework 4.7.02558),以C#编码。

我拥有使用System.Data.OleDB的现有代码,该代码可以成功读取较旧的Excel文件,但是较新的Excel文件却无法读取,并收到错误消息“外部表未采用预期的格式”。完整的例外情况显示在这篇文章的末尾。

我声称这是一个版本问题,因为如果我将文件下转换为Excel 2003,则读取工作簿成功。唯一的区别是Excel文件的版本。

我做了一些初步的尝试,希望发现我只需要升级Visual Studio中的某些组件,但是在这方面我还没有走运;这个难题有很多片段,我不知道从哪里开始。

System.Data.OleDb.OleDbException
HResult=0x80004005
Message=External table is not in the expected format.
Source=System.Data
StackTrace:
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()
c# excel oledb oledbconnection
1个回答
0
投票

好的,我遇到了正确的解决方案。而不是OleDb,我应该使用OpenXML(DocumentFormat.OpenXML)。我现在正在逐步了解这种方法

© www.soinside.com 2019 - 2024. All rights reserved.