加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 07:23:44 所属栏目:百科 来源:网络整理
导读:我创建了下面的类来打开并收集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).我很容易就错了.祝你好运,办公自动化是一个巨大的痛苦.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读