我有一个带有 OpenFileDialog
的 Windows 窗体应用程序。用户单击“处理”按钮,应用程序将浏览该文件(Excel 电子表格)并处理其中的数据。所有这些都按预期工作,但有一个警告。
应用程序处理完成后,文件仍处于锁定状态以进行编辑,因此当我打开文件进行更改时,我会收到以下消息:
如果我完全关闭应用程序,文件将被解锁,因此我假设应用程序保留文件的时间比应有的时间长。我猜应该有某种 Close()
方法或可以释放资源的方法,但我无法弄清楚我到底需要什么。我尝试使用 Dispose()
并将我的代码包装在 Using
block 中,我认为它会自动销毁所有内容,但没有运气。
这是我的代码:
Using excel = New ExcelPackage(OpenFileDialog1.OpenFile)
Dim ws = excel.Workbook.Worksheets.First()
'Process data in ws...
OpenFileDialog1.Dispose() 'Doesn't seem to release the file
excel.Dispose() 'Doesn't seem to release the file
End Using
最佳答案
OpenFileDialog.OpenFile Method返回 Stream ExcelPackage 可能未关闭的对象。
要确保流被释放,请使用以下模式。
Using strm As IO.Stream = OpenFileDialog1.OpenFile
Using excel = New ExcelPackage(strm)
' ...
End Using
End Using
关于Excel 文件在使用后保持锁定状态以供编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60510154/