Написать в файл, который открыт в Excel - PullRequest
2 голосов
/ 04 июня 2009

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

Ответы [ 4 ]

6 голосов
/ 04 июня 2009

Кажется, что Excel открывает файл в монопольном режиме, поэтому я могу думать только о том, чтобы записать ваши изменения во временный файл, а затем использовать FileSystemWatcher, чтобы увидеть, когда файл закрыт, и перезаписать файл. .

Не очень хорошая идея, так как вы можете потерять данные. Причина, по которой Excel блокирует файл, заключается в том, что вы случайно не перезаписываете изменения, сделанные в Excel.

1 голос
/ 04 июня 2009

Как бывший (и вроде как нынешний) программист VB, я могу сказать, что Джаред прав: нет способа сделать это напрямую. Вы можете сначала попытаться скопировать файл, внести изменения, а затем попытаться сохранить файл обратно в исходное местоположение, пока заблокированный файл не освободится. Вы должны иметь возможность скопировать этот файл, даже если он заблокирован.

1 голос
/ 04 июня 2009

Звучит так, как будто файл заблокирован. Я сомневаюсь, что вы сможете записать в этот файл, если он открыт в другом процессе.

0 голосов
/ 04 июня 2009

Как насчет использования объектной модели Excel и автоматизации добавления данных в открытую электронную таблицу? Вам, вероятно, нужно как-то попросить пользователя сообщить ему, что происходит.

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