Как определить, открыт ли определенный файл Excel с помощью VB.NET? - PullRequest
1 голос
/ 26 мая 2010

Я экспортирую свой набор данных в файл Excel и хочу убедиться, что все ошибки в файлах находятся под контролем. В частности, меня беспокоит доступ к файлу, который уже открыт. Происходит общее IOException, которое гласит: «Процесс не может получить доступ к файлу« C: \ Reports \ report300.csv », так как он используется другим процессом». Вот строка, в которой произойдет ошибка:

Dim output As New IO.StreamWriter(path, False, UnicodeEncoding.Default)

Полагаю, я мог бы просто попытаться это сделать, но что если произойдет IOException, не связанное с этим конкретным инцидентом? Есть ли способ проверить, открыт ли файл, прежде чем запускать этот код? Я посмотрел в Google, но не смог найти прямой ответ, особенно когда использую Excel.

Заранее спасибо.

1 Ответ

1 голос
/ 26 мая 2010

Вы можете использовать Marshal.GetLastWin32Error (), чтобы узнать, какая ошибка Windows вызвала исключение. Например:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...