2009-06-03 2 views
2

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

+0

Это не касается вопроса программирования, но у вас достаточно контроля над средой, чтобы пометить файл только для чтения в NTFS, так что, когда кто-то открывает его, файл не блокируется? Это будет работать, только если C# может открыть файл только для чтения в режиме записи, конечно. –

ответ

6

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

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

+0

Точно. Я НЕ ПРЕДУСМОТРЕТСЯ об использовании методов защиты от Excel, но мы с Джоном предложили способ - если нужно. – Dutchie432

+0

Обход проблемы: https://superuser.com/questions/491020/how-do-i-prevent-excel-from-locking-files-by-default –

1

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

1

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

0

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

Смежные вопросы