这个问题在这里已有答案:
我的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.Dataset nuget包 - 这些非常棒,非常适合免费商业用途。
有一个简短的教程(在c#中)here,在vb中重写不会太多。
如果你还不能移动到xlsx,并且它的数据不仅仅是你感兴趣的格式化,你可能想要查看Josh Close的CSVHelper Nuget包。
我已经非常轻松地使用了这两个,并且可以确认他们完成了这项工作。
如果这些是有用的建议,请告诉我。