2012-09-26 55 views
2

下面的代碼是打開excel文件,並從中讀取它看完之後,我要處理的Excel文件可以刪除它:如何釋放excel文件在vb.net

 Dim strNewPath As String = Server.MapPath("~/UploadedExcel/" & strFileName & strFileType) 

     'Connection String to Excel Workbook 
     If strFileType.Trim = ".xls" Then 
      connString2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strNewPath & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=2""" 
     ElseIf strFileType.Trim = ".xlsx" Then 
      connString2 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strNewPath & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=2""" 
     End If 
     query = "SELECT * FROM [Sheet1$]" 

     'Create the connection object 
     conn2 = New OleDbConnection(connString2) 
     'Open connection 
     If conn2.State = ConnectionState.Closed Then conn2.Open() 
     'Create the command object 
     cmd = New OleDbCommand(query, conn2) 
     da = New OleDbDataAdapter(cmd) 
     ds = New DataSet() 
     da.Fill(ds, "Staff") 

     ' up.insertExcel(ds) 

     da.Dispose() 
+1

你有沒有試過'使用conn2 =新的OleDbConnection ...'? –

回答

0

請注意,Command和Connection類也實現了IDisposable接口。 您應該使用「使用」塊或try/finally語句。在finally塊中,即使出現一些異常,也必須處理對象。

0

你沒有打電話:

conn2.Close(); 

(或等值conn2.Dispose()

,你應該通過包裝在一個Using語句,所以,它的即使有異常拋出關閉做:

Using conn2 = New OleDbConnection(...) 

    ... 

End Using ' conn2 is automatically disposed/closed here 
+0

@如何使用使用語句? – Adham

3

您應該使用Using-Statement爲實現IDisposable一切:

Using conn2 = New OleDbConnection(connString2) 
    conn2.Open() 
    Using cmd = New OleDbCommand(query, conn2) 
     Using da = New OleDbDataAdapter(cmd) 
      ds = New DataSet() 
      da.Fill(ds, "Staff") 
     End Using 
    End Using 
End Using 

確保丟棄對象(即使發生異常)。 Dispose也隱式關閉連接。