我目前正在開發一個應用程序,它需要用戶選擇的Excel電子表格位置被讀入DataTable,然後存儲在一個sql服務器數據庫從C#打開Excel Spreedsheet時拋出異常,說明文件正在被另一個用戶使用
該應用程序在我的開發環境中完美工作,但是當它部署到我的生產環境中時,將引發異常並顯示以下消息。
Microsoft Jet數據庫引擎無法打開文件'.xls'。它已經由另一個用戶專門打開,或者您需要查看其數據的權限。
我的代碼讀取Excel文件如下:
OleDbConnection objConn = null;
DataSet objDataset1 = null;
string fileLocation = GetFileLocation();
string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;"
+ "Data Source=" + fileLocation
+ ";" + "Extended Properties=Excel 8.0;";
objConn = new OleDbConnection(sConnectionString);
objConn.Open(); //This is where the exception is thrown
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;
objDataset1 = new DataSet();
objAdapter1.Fill(objDataset1, "XLData");
DataTable dt = objDataset1.Tables["XLData"];
注意應用和Excel文件是在同一領域不同的服務器。
挖掘各種論壇和知識庫時,它會顯示,當「用戶」沒有權限使用該文件時引發異常。雖然不建議所有用戶對該文件的權限都設置爲完全訪問權限。
除了文件權限還有什麼可能導致此異常被拋出?
防火牆設置,文件實際上可能是在使用中,等這是否成功運行在遠程機器上執行(使文件訪問是本地的那臺機器)。 – 2009-09-09 23:44:54