首页 > 解决方案 > Excel 文件在使用后仍处于锁定状态以供编辑

问题描述

我有一个带有OpenFileDialog. 用户单击“处理”按钮,应用程序将浏览文件 - Excel 电子表格 - 并处理其中的数据。所有这些都按预期工作,但需要注意一点。

应用程序完成处理后,文件仍处于锁定状态以进行编辑,因此当我打开文件进行更改时,我收到以下消息:

锁定编辑

如果我完全关闭应用程序,则文件将被解锁,因此我假设应用程序仅保留文件的时间超过了应有的时间。我猜应该有某种Close()方法或可以释放资源的东西,但我无法弄清楚我到底需要什么。我尝试使用Dispose()并将我的代码包装在一个Using我认为会自动破坏所有内容但没有运气的块中。

这是我的代码:

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

标签: excelvb.netwinformsopenfiledialogexcelpackage

解决方案


OpenFileDialog.OpenFile 方法返回一个可能未被 ExcelPackage 关闭的Stream对象。

要确保释放流,请使用以下模式。

Using strm As IO.Stream = OpenFileDialog1.OpenFile
  Using excel = New ExcelPackage(strm)
      ' ...
  End Using
End Using

推荐阅读