我在我的vb.net应用程序中创建了一个excel excel。我将数据写入其中,保存,然后询问用户是否要打开它。问题是,如果他们选择不查看它 - excel正常关闭并且它没有在进程中运行 - 但是 - 当我在excel中查看然后关闭它时 - 它仍然在WTM进程中运行。这是我的代码......
import re
titleList = []
text = 'a bunch of junk title=book1 more junk text title=book2'
title = re.compile(r'title=([A-Za-z0-9]+)')
findTitle = title.findall(text.strip())
titleList.extend(findTitle)
print(titleList)
>> ['book1', 'book2']
编辑:我可能会在TRY CATCH语句中添加这个 - 这是最后一部分...
Dim FileNam As String = "C:\Me\" & ReportName & Format(DateTime.Now, "yyyyMMddhhmmtt") & ".xlsx"
If System.IO.File.Exists(FileNam) Then
System.IO.File.Delete(FileNam)
End If
wBook.SaveAs(FileNam)
answer = MsgBox("Your extract has been saved here: " & strFileName & vbCrLf & vbCrLf &
"Would you like to view the file?",vbYesNo)
If answer = vbYes Then
System.Diagnostics.Process.Start(FileNam)
End If
答案 0 :(得分:1)
杀死一个进程并不是一个好主意,原因很多,其中之一就是你会杀死你手动打开的EXCEL实例,你将失去你的更改。如果你想保持这种状态,请通过PID终止进程,并在启动app时保存现有进程。
或者....
关闭Office自动化应用程序,如Excel,Word等。您必须处置COM对象 ..尝试类似的事情:
oApp.ActiveWorkbook.Close(True)
Application.DoEvents()
oApp.Quit()
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oApp)
oApp = Nothing
oApp 当然是您的办公室Application
。
您还可以包含垃圾收集,但这不是一个好主意......
GC.Collect() 'Start .NET CLR Garbage Collection
GC.WaitForPendingFinalizers() 'Wait for GC to finish