Ошибка при открытии потокового чтения, поскольку файл используется другим процессом - PullRequest
1 голос
/ 28 апреля 2010

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

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

1 Ответ

2 голосов
/ 28 апреля 2010

Когда вы вызываете File.Open для получения потока, используете ли вы перегрузку, которая позволяет вам указать FileAccess?

http://msdn.microsoft.com/en-us/library/y973b725.aspx

Обратите внимание на параметры:

public static FileStream Open(
    string path,
    FileMode mode,
    FileAccess access,
    FileShare share
)

Вы можете передать FileAccess.Read третьему параметру, чтобы указать, что вам нужен только доступ только для чтения. Вам также следует установить FileShare.Read, чтобы другие могли открывать файл только для чтения, а не блокировать его самостоятельно. Обратите внимание, что если MS Excel открывает файл с FileShare.None, вы, вероятно, не сможете получить к нему доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...