C#操作EXCEL文件另一个问题
public DataSet ExcelToDS(string path)
{
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
+ "DataSoure=" + path + ";"
+ "Extend Properties=Excel 8.0;HDR=NO;IMEX=1";
OleDbConnection conn = new OleDbConnection(connStr);
conn.Open();
string cmdStr = "select * from [sheet1$]";
OleDbDataAdapter adapter = new OleDbDataAdapter(cmdStr, conn);
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
程序跑到conn.OPen();的时候就发生异常;
异常信息:
未处理System.Data.OleDb.OleDbException
HResult=-2147467259
Message=找不到可安装的 ISAM。
Source=Microsoft JET Database Engine
ErrorCode=-2147467259
StackTrace:
在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
在 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
在 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
在 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
在 System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
在 System.Data.OleDb.OleDbConnection.Open()
在 CSharpTest.Test01.ExcelToDS(String path) 位置 h:\code\projects\CSharpTest\CSharpTest\Test01.cs:行号 19
在 CSharpTest.Program.Main(String[] args) 位置 h:\code\projects\CSharpTest\CSharpTest\Program.cs:行号 15
在 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart()
InnerException:
[解决办法]
要安装excel。
不如用NPOI(第三方组件)来做。
示例
下载地址
[解决办法]
参考:http://www.cnblogs.com/zyc2/archive/2005/06/28/182492.html
不过说实话,不建议用这些库来读数据,因为总是会出现各种各样的未知的问题,03版本的建议用NPOI读取数据,07及以上版本的建议用EPPlus