我的問題基本上就是如何結束使用excel時運行的Excel.exe進程。在應用程序中,我打開並使用一對Excel工作簿,然後讓用戶按照自己的意願去做,但問題是我的應用程序從未放棄過程。Excel進程在VB.net關閉後仍然運行
如果應用程序在關閉excel之前關閉,則在excel關閉時結束該過程,否則,如果在關閉excel後關閉應用程序,則該過程將保持運行。
我已經嘗試了一些我在互聯網上發現的與GC.collect相關的事情,並且正在等待未決的終結器或者沿着這些行發生的事情,但是都沒有奏效。
我也可以愉快地關閉excel過程,唯一的問題是不知道我是否關閉了一個用戶重要的電子表格,他們忽略了保存還是我的。
我不確定我的代碼是否有助於答案,但我正在使用microsoft.office.interop.excel獲取excel,並且我正在使用已保存在應用程序資源文件夾中的工作簿。
CNC中
這裏的一切,我已經試過了,我知道這是一個有點矯枉過正,但遺憾的是它仍然無法結束進程
Marshal.ReleaseComObject(FirstWorksheet)
Marshal.FinalReleaseComObject(FirstWorksheet)
Marshal.ReleaseComObject(SecondWorksheet)
Marshal.FinalReleaseComObject(SecondWorksheet)
Marshal.ReleaseComObject(ThirdWorksheet)
Marshal.FinalReleaseComObject(ThirdWorksheet)
Marshal.ReleaseComObject(FourthWorkSheet)
Marshal.FinalReleaseComObject(FourthWorkSheet)
Marshal.ReleaseComObject(xlRange)
Marshal.FinalReleaseComObject(xlRange)
Marshal.ReleaseComObject(SecondxlRange)
Marshal.FinalReleaseComObject(SecondxlRange)
Marshal.ReleaseComObject(thirdxlRange)
Marshal.FinalReleaseComObject(thirdxlRange)
Marshal.ReleaseComObject(fourthxlRange)
Marshal.FinalReleaseComObject(fourthxlRange)
Marshal.ReleaseComObject(.activeworkbook)
Marshal.FinalReleaseComObject(.activeworkbook)
Marshal.ReleaseComObject(excelApplication)
Marshal.FinalReleaseComObject(excelApplication)
MSExcelControl.QuitExcel() 'A function made by someone else I work with that was meant to close excel's process
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
CNC中這裏的quitExcel方法
Friend Shared Sub QuitExcel()
If Not getExcelProcessID = -1 Then
If Not excelApp Is Nothing Then
'Close and quit
With excelApp
Try
Do Until .Workbooks.Count = 0
'Close all open documents without saving
.Workbooks(1).Close(SaveChanges:=0)
Loop
Catch exExcel As Exception
'Do nothing
End Try
Try
.ActiveWorkbook.Close(SaveChanges:=0)
Catch ex As Exception
'Do nothing
End Try
Try
.Quit()
Catch ex As Exception
'Do nothing
Finally
myExcelProcessID = -1
End Try
End With
excelApp = Nothing
End If
End If
End Sub
他已經嘗試在他的類中使用進程ID做同樣的事情,問題是他沒有工作,這就是爲什麼我試圖再次獲得進程ID本身, orked
可能有興趣:http://stackoverflow.com/questions/1610743/reading-excel-files-in-vb-net-leaves-excel-process-hanging – Fionnuala 2012-08-01 14:26:16
也可以在這裏看到:http:// stackoverflow。 com/questions/1041266/c-sharp-and-excel-automation-ending-the-running-instance/1041740#1041740 – sloth 2012-08-01 14:28:16
謝謝,我會看看他們倆! – Alex 2012-08-01 14:29:18