vb.net创建电子表格,但手动关闭excel后仍保留虚拟进程

vb.net创建电子表格,但手动关闭excel后仍保留虚拟进程,excel,vb.net,Excel,Vb.net,我的vb.net代码用于生成Excel电子表格。创建Excel文件并关闭程序和Excel后,将保留一个虚拟进程。我尝试了以下方法: Dim xlApp As Excel.Application Dim xlWorkBook As Excel.Workbook Dim xlWorkSheet As Excel.Worksheet Dim xlWorkSheet2 As Excel.Worksheet Dim xlRange As Excel.Range

我的vb.net代码用于生成Excel电子表格。创建Excel文件并关闭程序和Excel后,将保留一个虚拟进程。我尝试了以下方法:

    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim xlWorkSheet2 As Excel.Worksheet
    Dim xlRange As Excel.Range

    'Write data to Excel here

    Marshal.ReleaseComObject(xlApp)
    Marshal.ReleaseComObject(xlWorkBook)
    Marshal.ReleaseComObject(xlWorkSheet)
    Marshal.ReleaseComObject(xlWorkSheet2)

我还尝试了其他一些方法,通过编程终止进程。我想做的是保持由代码生成的Excel工作簿处于打开状态,并在不关闭打开的电子表格的情况下关闭虚拟进程。由于某些原因,当Excel仍处于打开状态时,隐藏的进程不可见,但在手动关闭Excel后,进程仍处于打开状态。有什么建议吗?

我曾经经历过类似的噩梦,服务器应用程序将这些excel.exe实例抛在身后

我个人解决这个问题的方法是使用windows计划作业以合理的间隔执行使用TASKKILL/IM Excel命令的批处理文件——虽然不优雅,但它让我们摆脱了困境

如果你不喜欢2007年以前的excel(xls)格式,我建议你看看优秀的(没有双关语)ExcelDataReader和可选的ExcelDataReader.Datasetnuget软件包——这些软件包非常棒,非常适合免费商业使用

有一个简短的教程(用c#编写),用vb重写不需要太多时间

如果您还不能移动到xlsx,并且您对它的数据格式感兴趣,那么您可能需要查看Josh Close的CSVHelperNuget软件包

我已经非常轻松地使用了这两种方法,并且可以确认它们能完成任务


请告诉我这些建议是否有用。

可能会提供一些信息,谢谢。是的,我看到了那个线程,但我认为提供的示例杀死了所有Excel实例。我不知道为什么一个幻影进程仍然存在。这有点令人困惑。我找到了一个有效的解决方案。下面的线程修复了问题-->是的,我想是的。谢谢,谢谢你的意见。在看到你的评论之前,我已经解决了这个问题(见我在第一个答案中的上述回答)。没问题。很高兴听到:)