首页 新闻 会员 周边

System.Data.OleDb.OleDbException: Microsoft Office Access 数据库引擎无法打开文件“”或无法向其写入数据。它已经被其他用户以独占方式打开,或者您没有查看或写入其数据的权限。

0
悬赏园豆:50 [已关闭问题] 关闭于 2017-03-01 16:52

公司有个老项目,用到Oledb读取htm/excel文件,系统部署到服务器后,时常会出现读取文件时报这个错误:System.Data.OleDb.OleDbException: Microsoft Office Access 数据库引擎无法打开文件“”或无法向其写入数据。它已经被其他用户以独占方式打开,或者您没有查看或写入其数据的权限。

代码如下:

public static DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)
{
  DataTable dt = null;
  OleDbConnection conn = null;
  OleDbDataAdapter adapter = null;
  try
  {
    string strConn = "Provider=Microsoft.ACE.OleDb.12.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
    DataSet ds = new DataSet();
    using (conn = new OleDbConnection(strConn))
    {
      if (conn.State == ConnectionState.Closed)
      {
        conn.Open();
      }
      DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
      string strExcel = string.Format("SELECT * FROM [{0}]", dtSheetName.Rows[0]["TABLE_NAME"].ToString());
      adapter = new OleDbDataAdapter(strExcel, strConn);
      adapter.Fill(ds, strSheetName);
      adapter.Dispose();
      conn.Close();
      conn.Dispose();
    }
    dt = ds.Tables[strSheetName];
  }
  catch (Exception ex)
  {
      CommonMessage.SaveExLog(strExcelFileName+Environment.NewLine+ex.Message + Environment.NewLine + ex.StackTrace, "debug.log");
  }
  finally
  {
    if (conn != null && conn.State == ConnectionState.Open)
    {
      conn.Close();
      adapter.Dispose();
      conn.Dispose();
    }
  }
  return dt;
}

大家帮忙看看是哪的问题,谢谢了!!

yanhuanghero的主页 yanhuanghero | 初学一级 | 园豆:117
提问于:2017-02-24 09:43
< >
分享
所有回答(1)
0

 被多次使用,问题已经明确。即使这代码是正确的,但使用不当一样出现该错误,当然也可能比如access等软件占用等。

花飘水流兮 | 园豆:13560 (专家六级) | 2017-02-24 11:08

读取的是excel文件,每次上传一个压缩包,然后把压缩包解压到一个新文件夹里,然后再读取新文件夹里的excel文件,这样还会独占吗,谢谢了?

支持(0) 反对(0) yanhuanghero | 园豆:117 (初学一级) | 2017-02-24 11:18

@yanhuanghero: 你说呢~你这样说了跟没说没区别啊。代码写对了肯定不会独占,比如你解压后这个文件未释放那被占了没有?

支持(0) 反对(0) 花飘水流兮 | 园豆:13560 (专家六级) | 2017-02-24 16:05

@花飘水流兮: 恩,解压缩时文件释放了,我再找找原因吧,就这有时出问题,有时不出问题,不好查原因

支持(0) 反对(0) yanhuanghero | 园豆:117 (初学一级) | 2017-02-24 17:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册