应用程序没有从任务pipe理器发布
我试图从Windows窗体中写入一些数据到Excel
文件,这是有效的。
' Excel load data Dim oExcelApp As New Microsoft.Office.Interop.Excel.Application Dim oWorkBook As Microsoft.Office.Interop.Excel.Workbook Dim oWorkSheet As Microsoft.Office.Interop.Excel.Worksheet oWorkBook = oExcelApp.Workbooks.Open("C:\Temp\Test.xlsx") oWorkSheet = oWorkBook.Worksheets(1) oWorkSheet.Range("A1").Value = "Test" oWorkBook.Save() oWorkBook.Close()
问题是:完成后, Excel
仍在我的任务pipe理器中运行。 当我按下button10次时,在我的任务pipe理器中有10个Excel
引用。
问题:如何在将值写入Excel
后完全卸载Excel
?
您需要Quit
Microsoft Excel,然后释放对象。
从这个答案引用的代码: 使用VB.NET处理Excel COM对象的正确方法? 而Excel应用程序在调用退出后不会退出
'Excel load data Dim oExcelApp As New Microsoft.Office.Interop.Excel.Application Dim oWorkBook As Microsoft.Office.Interop.Excel.Workbook Dim oWorkSheet As Microsoft.Office.Interop.Excel.Worksheet oWorkBook = oExcelApp.Workbooks.Open("C:\Temp\Test.xlsx") oWorkSheet = oWorkBook.Worksheets(1) oWorkSheet.Range("A1").Value = "Test" oWorkBook.Save() oWorkBook.Close() oExcelApp.Quit() 'Release object references. releaseObject(oWorkSheet) releaseObject(oWorkBook) releaseObject(oExcelApp) ---------------------------------------------------------------------------- Private Sub releaseObject(ByVal obj As Object) Try System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) obj = Nothing Catch ex As Exception obj = Nothing Finally GC.Collect() End Try End Sub
您必须closures刚打开的连接。 您可以通过在当前代码之后添加以下代码来完成此操作:
oExcelApp.Quit();
来源及更多信息: 在这里
有关这里的quit()
方法的更多信息。
重要提示:如果您打开尚未保存的工作簿,则此方法将显示一个要求保存的对话框。
如果你不想这样做,你必须(1):保存所有打开的工作簿或(2)将DisplayAlerts
设置为false。
(1)
workbooks.Save()
(2)
oExcelApp.DisplayAlerts = false