首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#操作EXCEL文件另一个有关问题

2013-12-02 
C#操作EXCEL文件另一个问题public DataSet ExcelToDS(string path){string connStr ProviderMicrosoft

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

热点排行