我的程序如下:
int result;
DB_Access access = new DB_Access();
SqlConnection sqlConn = (SqlConnection)Application["dataconn"];
int userid = (int)Session["user_id"];
string strName;
string strMobile;
string strCompany;
string strJob;
string strAddress;
string strPhone;
if(txtFileUp.PostedFile.FileName=="")
{
    Response.Write("<script language='javascript'>alert('请先选择要导入的文件!');</script>");
    return;
}
try
{
    char[] spliter = {'\\'};
    strFullPath =  txtFileUp.PostedFile.FileName;
    OleDbConnection myOleDbConnection = new OleDbConnection  (@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
    strFullPath + @";Extended Properties=Excel 8.0;");
    myOleDbConnection.Open();//出错了
    OleDbCommand oCmd = new OleDbCommand("SELECT * FROM [Sheet1$]",myOleDbConnection);
    OleDbDataAdapter oAdapter = new OleDbDataAdapter();
    oAdapter.SelectCommand = oCmd;
    DataTable dt = new DataTable();
    oAdapter.Fill(dt);
    for(int i=0;i<dt.Rows.Count;i++)
    {
DataRow newRow = dt.Rows[i];
strName = (string)newRow["A"];
strMobile = (string)newRow["B"];
strCompany = (string)newRow["C"];
strJob = (string)newRow["D"];
strAddress = (string)newRow["E"];
strPhone = (string)newRow["F"];
try
{
    access.addLinkManParam(sqlConn,strName.Trim(),strMobile.Trim(),1,strCompany.Trim(),strJob.Trim(),strAddress.Trim(),strPhone.Trim(),userid,out result);
    if(result != 0)
    {
        Response.Write("<script language='javascript'>alert('数据库操作出错!');</script>");
        return;
    }
}
catch
{
    Response.Write("<script language='javascript'>alert('数据库操作出错!');</script>");
    return;
}
    }
}
catch(Exception err)
{
    string st = err.Message;
    Response.Write("<script language='javascript'>alert('Excel读取出错!');</script>");
    return;
}
结果程序在myOleDbConnection.Open();就出错了,错误信息为:Microsoft Jet 数据库引擎打不开文件'......\Book1.xls'。它已经被别的用户以独占方式打开,或没有查看数据的权限。
可是我并没有打开该文件啊!
请问如何解决,谢谢!

解决方案 »

  1.   

    注:DB_Access()是我编写的一个专门调用存储过程的一个类
      

  2.   

    你是不是BOOK。XLS文件打开(非程序中打开)的时候。执行程序,
      

  3.   

    你有权限操作你的xls吗?
    如果没有右键->安全->把权限给asp.net用户,或everyone完全控制
    或者是不是被execl打开的时候进行的操作>>??
      

  4.   

    是啊,果然是没有给权限,给了权限就好了。另外我想问一下使用了OleDbConnection后是不是要关闭啊?即OleDbConnection.Close()。以及如何从DataRow取值呢?
    strName = (string)newRow["A"];
    strMobile = (string)newRow["B"];
    strCompany = (string)newRow["C"];
    strJob = (string)newRow["D"];
    strAddress = (string)newRow["E"];
    strPhone = (string)newRow["F"];
    也就是newRow后面的column应该如何决定?