Microsoft Access数据库引擎无法打开或写入文件权限错误

时间:2018-06-21 05:46:52

标签: c# asp.net excel oledb

在我确定我的问题之前,让我告诉大家我已经在Internet上对该问题进行了足够的探索,但是没有任何文章可以帮助我解决问题。问题是,当我尝试上传excel文件并开始对其进行处理时,它会引发错误”“ Microsoft Access数据库引擎无法打开或写入该文件。该文件已由另一个用户专门打开,或者您需要权限来查看和写入其数据”。。我的代码在本地计算机上正常工作,主要问题是当我将代码上传到生产服务器时。 下面是我的代码:

   if (file_Upload_DataFile.HasFile)
            {
                string fileName = 
    Path.GetFileName(file_Upload_DataFile.PostedFile.FileName);
                    string fileExtension = Path.GetExtension(file_Upload_DataFile.PostedFile.FileName);

                    if (fileExtension != ".xls" && fileExtension != ".xlsx")
                    {
                        ScriptManager.RegisterStartupScript(this, this.GetType(), "onload", "alert('invalid file format!! you must upload a file having an extention of either (.xls) or (.xlsx)');", true);
                        extFlag = false;
                    }

                    string fileLocation = Server.MapPath("../ExcelReport/" + fileName);
                    file_Upload_DataFile.SaveAs(fileLocation);
                    if (fileExtension == ".xls")
                    {
                        connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
                        extFlag = true;
                    }
                    else if (fileExtension == ".xlsx")
                    {
                        connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
                        extFlag = true;
                    }

                }
                if (extFlag != false)
                {

                    OleDbConnection con = new OleDbConnection(connectionString);
                    OleDbCommand cmd = new OleDbCommand();
                    cmd.CommandType = System.Data.CommandType.Text;
                    cmd.Connection = con;
                    OleDbDataAdapter dAdapter = new OleDbDataAdapter(cmd);
                    //DataSet ds = new DataSet();
                    DataTable dtExcelRecords = new DataTable();
                    con.Open();
                    DataTable dtExcelSheetName = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();
                    cmd.CommandText = "SELECT * FROM [" + getExcelSheetName + "]";
                    dAdapter.SelectCommand = cmd;
                    dAdapter.Fill(dtExcelRecords);
                    con.Close();
    }

注意:我正在使用MySql作为数据库。

我还为服务器上的文件夹设置了权限,该文件夹在上传后仍然存在相同的问题。

0 个答案:

没有答案