2012-09-25 133 views
1

這裏是我打開Excel文件和讀取數據的代碼,一切正常,但我想要關閉一旦Excel文件被讀取,我該怎麼做?我嘗試Dispose的對象,但沒有幫助。閱讀後關閉Excel文件

public static DataTable ExcelWorkbook(string workbookName) 
     { 
      string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""", FILENAME); 
      string query = String.Format("select * from [{0}$]", workbookName); 

      OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString); 
      DataSet dataSet = new DataSet(); 
      dataAdapter.Fill(dataSet); 

      dataAdapter.Dispose(); 

      DataTable myTable = dataSet.Tables[0]; 
      if (myTable != null) 
       return myTable; 

      return null; 
     } 

回答

1

你的代碼應該看起來像某事是:連接被關閉

OleDbConnection connection; 
OleDbDataAdapter clientsAdapter new OleDbDataAdapter(); 
DataSet myDataSet = new DataSet(); 

connectionString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES""",FILENAME); 
connection = new OleDbConnection(connectionString); 
connection.Open(); 

clientsAdapter.SelectCommand = new OleDbCommand("SELECT * FROM [{0}$]", connection); 

DataTable data = new DataTable("MyTable"); 
clientsAdapter.Fill(data); 
myDataSet.Tables.Add(data); 

connection.Close(); 

後,Excel文件將被解鎖。

+1

,我的excel文件仍處於打開狀態。 –

+0

我不確定你的整個程序是如何運作的。 您應該使用「乾淨」項目來評估代碼。 雖然鎖可能需要幾秒鐘才能刪除。 – Lemonade

+0

我不知道你在哪裏有一行說關閉excel對象?我已經嘗試創建一個新的新項目,但它並沒有關閉..後我運行的代碼閱讀Excel文件,我仍然看到我的Excel是在只讀模式下打開。 –