应用程序未从任务管理器中释放

时间:2015-09-04 12:31:00

标签: vb.net excel

我正在尝试将一些数据从我的windowsform写入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仍然在我的任务管理器中运行。当我按下按钮10次时,我的任务管理器中有10个Excel引用。

问题:如何在将值写入Excel之后完全卸载Excel

2 个答案:

答案 0 :(得分:2)

您需要Quit Microsoft Excel,然后释放对象。

此回答引用的代码:The proper way to dispose Excel com object using VB.NET?Excel application not quitting after calling quit

'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

答案 1 :(得分:0)

您必须关闭刚刚打开的连接。您可以通过在当前代码之后添加此行来执行此操作:

oExcelApp.Quit();

来源&更多信息:here

有关quit()方法here的更多信息。

重要提示:如果您尚未保存尚未保存的工作簿,则此方法将显示一个要求保存的对话框。

如果您不想这样做,则必须(1):保存所有打开的工作簿或(2)将DisplayAlerts设置为false。

(1)

workbooks.Save()

(2)

oExcelApp.DisplayAlerts = false