当前位置 : 主页 > 编程语言 > c语言 >

无法从VB.NET应用程序关闭Excel进程

来源:互联网 收集:自由互联 发布时间:2021-06-24
我创建了下面的类来打开并收集excel文件中工作表的名称.它在打开文件并返回每个单独工作表的名称时应该这样做.不幸的是,我无法关闭文件.这使Excel.exe进程保持挂起状态.即使我试图在
我创建了下面的类来打开并收集excel文件中工作表的名称.它在打开文件并返回每个单独工作表的名称时应该这样做.不幸的是,我无法关闭文件.这使Excel.exe进程保持挂起状态.即使我试图在这个类的底部关闭它,这个过程仍然会挂起.在我再次使用该文件之前,我必须手动转到 Windows任务管理器并终止该过程.即使我退出应用程序,它仍然在那里.关于如何从代码中删除此进程的任何建议?

Imports Excel = Microsoft.Office.Interop.Excel

Public Class ExcelWrapper

Dim strTypeSelection As String = String.Empty
Dim strFilePath As String = String.Empty

Function GetWorksheetsByName(ByVal strfilePath As String) As Array

    Dim xlsApp As Excel.Application
    Dim xlsWorkBook As Excel.Workbook

    xlsApp = New Excel.Application
    xlsWorkBook = xlsApp.Workbooks.Open(strfilePath)
    Dim intWsCount As Integer = xlsApp.Worksheets.Count

    Dim sarWorksheetName(intWsCount - 1) As String

    Dim i As Integer = 0
    'gathers the names off all the worksheets 
    For Each totalWorkSheets In xlsApp.Worksheets
        sarWorksheetName(i) = totalWorkSheets.Name
        i += 1
    Next totalWorkSheets

    xlsWorkBook.Close(strfilePath)
    xlsApp.DisplayAlerts = False
    xlsApp.Quit()

    Return sarWorksheetName
End Function

End Class
我之前也遇到过这个问题,并且我记得解决方案是在来自Office库的所有对象上调用Marshal.ReleaseComObject(Object obj)或Marshal.FinalReleaseComObject(Object obj).我很容易就错了.祝你好运,办公自动化是一个巨大的痛苦.
网友评论