string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + ";" +
                         "Extended Properties='Excel 8.0;IMEX=1'";
            DataSet ds = new DataSet();
            try
            {
                OleDbDataAdapter Da = new OleDbDataAdapter("select * from [" + sName + "$]", strConn);
                Da.Fill(ds);
                grdmain.DataSource = ds.Tables[0];
                txtHPath.Text = sPath;            }
            catch(Exception e)
            {
                MessageBox.Show("引入EXCEL数据失败!请与管理员联系!" + e.Message);
                txtHPath.Text = "";
                
            }
代码如上,现在问题是这样,在我自己的电脑上运行没有任何问题
,生成EXE后,在其他电脑上一执行到这里,就会卡死,换了3台电脑都是如此,
望各位高人解惑!!!!!!!!!!!!!!

解决方案 »

  1.   

    也许Excel的版本问题,或是驱动问题。
      

  2.   

    你本机的EXCEL是什么版本 看看版本对么
    代码没问题 在我这里也可以运行
    或者是你生成的exe 少什么东西
    仔细找找
      

  3.   

    其它电脑上安装的是不是Microsoft Excel
      

  4.   

    代码没问题,可能是Office版本或组件的问题。
      

  5.   

    我把我自己电脑上的 OFFICE安装包 在 对方电脑上也重新装了一遍,还是一样,应该不是OFFICE版本的问题,至于只读的问题,我新建了一个EXCEL 也是一样的问题。卡死的情况是这样的,一旦选择了 EXCEL,不管是读取成功显示在GRIDVIEW上,还是读取失败。
    之后 点这个程序的 任何操作就是 没有相应了。我测试的3台电脑 ,2台是客户的电脑,1台是同事的电脑,都是会卡死。所以也不知道 各位没有过这方面的经历。
      

  6.   

    LZ你已经把问题找到了的哇 
    有可能是数据量过大造成的
    还有其他可能 等LZ单步调试 把卡死的地方贴出来
      

  7.   

    还有LZ我都没看见你打开access不知道是不是在其他地方打开的
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + ";" +
                             "Extended Properties='Excel 8.0;IMEX=1'";
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();
                DataSet ds = new DataSet();
                try
                {
                    OleDbDataAdapter Da = new OleDbDataAdapter("select * from [" + sName + "$]", conn);
                    Da.Fill(ds);
                    grdmain.DataSource = ds.Tables[0];
                    txtHPath.Text = sPath;            }
                catch(Exception e)
                {
                    MessageBox.Show("引入EXCEL数据失败!请与管理员联系!" + e.Message);
                    txtHPath.Text = "";
                    
                }
    这就对了 我才看LZ的代码 这么大个BUG
     OleDbDataAdapter Da = new OleDbDataAdapter("select * from [" + sName + "$]", strConn);//你的strconn是啥?是连接数据库的字符串...格式都错了改成我上面写的就对了LZ
      

  8.   

    LZ为了能区别和你的不同我把我改的部分用红色表示string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + ";" +
                             "Extended Properties='Excel 8.0;IMEX=1'";
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();

                DataSet ds = new DataSet();
                try
                {
                    OleDbDataAdapter Da = new OleDbDataAdapter("select * from [" + sName + "$]", conn);
                    Da.Fill(ds);
                    grdmain.DataSource = ds.Tables[0];
                    txtHPath.Text = sPath;            }
                catch(Exception e)
                {
                    MessageBox.Show("引入EXCEL数据失败!请与管理员联系!" + e.Message);
                    txtHPath.Text = "";
                    
                }
      

  9.   

    --!csdn也有BUGstring strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + ";" +
                             "Extended Properties='Excel 8.0;IMEX=1'";
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();

                DataSet ds = new DataSet();
                try
                {
                    OleDbDataAdapter Da = new OleDbDataAdapter("select * from [" + sName + "$]", conn);
                    Da.Fill(ds);
                    grdmain.DataSource = ds.Tables[0];
                    txtHPath.Text = sPath;            }
                catch(Exception e)
                {
                    MessageBox.Show("引入EXCEL数据失败!请与管理员联系!" + e.Message);
                    txtHPath.Text = "";
                    
                }
      

  10.   

    感谢LS的解答,不过 不是您说的问题,
    经过几番努力,我终于发现问题了!!!哈哈哈原来是
    System.Environment.CurrentDirectory的问题