如何判断某个Excel文件是否使用VB.NET打开?
我正在导出我的数据集到一个excel文件,我想确保我控制任何文件错误。 我特别关心的是访问已经打开的文件。 出现一个普通的IOException,说:“进程无法访问文件”C:\ Reports \ report300.csv“,因为它正在被另一个进程使用。 这里是错误发生的路线:
Dim output As New IO.StreamWriter(path, False, UnicodeEncoding.Default)
我想我可以试一试,但是如果发生了一个与这个特定事件无关的IOException呢? 有没有一种方法可以在允许此代码运行之前检查文件是否已经打开? 我看着谷歌,但无法find一个直接的答案,特别是当我使用Excel。
提前致谢。
您可以使用Marshal.GetLastWin32Error()来找出哪些Windows错误导致exception。 例如:
Public Shared Function OpenUnlockedFile(ByVal path As String) As StreamWriter Dim sw As StreamWriter = nothing Try sw = New StreamWriter(path) Catch ex As IOException When System.Runtime.InteropServices.Marshal.GetLastWin32Error() = 32 REM locked, return nothing End Try Return sw End Function