没有可用的错误消息,结果代码: E_NOINTERFACE(0x80004002)。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 没有可用的错误消息,结果代码: E_NOINTERFACE(0x80004002)。
string mystring = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" + path + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";
                    OleDbConnection cnnxls = new OleDbConnection(mystring);
                    string strExcel = "SELECT * FROM [Sheet1$]";
                    OleDbDataAdapter myDa = new OleDbDataAdapter(strExcel, cnnxls);
                    DataSet myDs = new DataSet();
                    myDa.Fill(myDs);  //该行报错

解决方案 »

  1.   

    异常是不支持接口,是不是驱动与excel的版本不对,导致接口不支持?
    换个驱动试试?
      

  2.   

    office2003对应的excel版本是Excel 11
    office2007对应的excel版本是Excel 12是不是你写的8.0的版本太老了?
      

  3.   

    "Extended Properties='Excel 8.0"改成"Extended Properties='Excel 11.0"试试
      

  4.   

    0;Data Source =" + path + ";Extended Properties='Excel 12.
    0;HDR=Yes;IMEX=1'"  你的excel是03还是07的 反正就是这一行代码的问题 你再试一下 不行的话再说
      

  5.   

    换成Excel 11.0 则这样报错:找不到可安装的 ISAM
      

  6.   

    我的excel是2003的,sql2005,VS2008,xp系统,本机没安装Access是否有关系?
      

  7.   

    string mystring = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" + path + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";=====>Data Source =" + System.Web.HttpContext.Current.Server.MapPath(path) + "
      

  8.   

    你们的方法都试过了,还是报错:结果代码: E_NOINTERFACE(0x80004002)。  
     网上找E_NOINTERFACE(0x80004002)。  的相关资料  都没能找到合适的解决方法
    真无语。急啊。。
      

  9.   


    注意单引号要成对。
    string mystring = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" + path + ";Extended Properties='Excel 11.0;HDR=Yes;IMEX=1'";看看这篇帖子,跟你遇到的问题,一模一样:
    导入Excel数值读不到,找不到可安装的 ISAM错误!
      

  10.   


    已经成对的了,用Excel 11.0则报错:找不到可安装的 ISAM
    只有用了 Excel 8.0就报:结果代码: E_NOINTERFACE(0x80004002)。  这个错。
    不知道会不会跟我的电脑的office2003有关系?
      

  11.   

    这是我项目中操作Excel        /// <summary>
            /// 获取Excel文件中的数据
            /// </summary>
            /// <param name="filepath">Excel文件的绝对路径</param>
            /// <param name="sheetname">Excel工作薄</param>
            /// <returns></returns>
            public static DataSet ExcelDataSource(string filepath, string sheetname)
            {
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filepath + ";" + "Extended Properties=Excel 8.0;";
                OleDbConnection con = new OleDbConnection(strConn);
                OleDbDataAdapter oda = new OleDbDataAdapter("select * from [" + sheetname + "$]", con);
                DataSet ds = new DataSet();
                oda.Fill(ds);
                return ds;
            }
      

  12.   

    用你的方法 也是一样的报这个错:结果代码: E_NOINTERFACE(0x80004002)。 
      

  13.   

     DataTable Excel_UserInfo = new DataTable();
    string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileInfo.FullName + ";" + "Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"";
                    string strExcel = "select * from [sheet1$]";                using (OleDbDataAdapter adaptor = new OleDbDataAdapter(strExcel, strConn))
                    {
                        DataSet ds = new DataSet();
                        adaptor.Fill(ds);
                        Excel_UserInfo = ds.Tables[0];
                    }
      

  14.   


    你这个是导入Excel2007版本的吧。。 我的是2003的