读取EXECL数据,本期服务器上浏览时,没问题,在其他机器上访问时,出现了:Microsoft Jet 数据库引擎打不开文件''。 它已经被别的用户以独占方式打开,或没有查看数据的权限。 
我连接EXECL代码如下:
        try
        {
            //获取文件路径信息
            string filePath = FiOut.Value;
            //建立Execl连接字符串
            string ExeclConstr = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" + filePath;
            //查询语句
            string ExeclSql = "select * from [Sheet1$]";
            //连接Execl
            OleDbConnection ExeclConn = new OleDbConnection(ExeclConstr);
            ExeclConn.Open();            OleDbCommand ExeclCmd = new OleDbCommand();
            ExeclCmd.Connection = ExeclConn;
            ExeclCmd.CommandText = ExeclSql;            //读取Execl数据            OleDbDataReader ExeclDr = ExeclCmd.ExecuteReader();            DataTable ExeclDt = new DataTable();
            ExeclDt.Load(ExeclDr);
            ExeclConn.Close();
            ExeclGrid.DataSource = ExeclDt;
            ExeclGrid.DataBind();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
求高手指教

解决方案 »

  1.   

    我重启过机器都没有用,还有一楼指的文件目录是指EXECL所在的客户端的文件目录,还是程序坐在的服务器的目录呢,这个权限都已经开放了啊
      

  2.   

    如果是服务器:
      1. 服务器文件所在目录是否具有访问权限(文件夹和文件权限设置)
      2. 服务器文件读取时,是否有释放,如果未释放,那么多用户同时访问时肯定有出有错误。如果是客户端:
      1. 文件是否已经使用Excel打开了,或使用其他程序打开未释放。
      2. 所在目录是否具有访问权限(文件夹和文件权限设置)
      3. 文件读取时,是否有释放
      

  3.   

                //读取Execl数据            OleDbDataReader ExeclDr = ExeclCmd.ExecuteReader();            DataTable ExeclDt = new DataTable();
                ExeclDt.Load(ExeclDr);
                ExeclDr.Dispose();
                ExeclConn.Close();
    ----------------------------------------------------
     还是不行,怎么回事呢?