Редактирование файлов Word, хранящихся в базе данных - PullRequest
0 голосов
/ 11 августа 2010

Мы хотим хранить шаблоны Microsoft Word в нашей базе данных.Затем мы хотим позволить пользователю редактировать файлы шаблона и затем сохранять их обратно в базу данных.Какую стратегию лучше использовать в этой ситуации?

Возможно ли это, если Word запущен в отдельном процессе?т.е. не размещены в нашем приложении.Если это так, это будет связано с мониторингом файла на диске на предмет изменений, поскольку это звучит ужасно.С этим размышлением мы хотели бы открыть файл из потока памяти и никогда не позволять ему касаться диска.Но мы открыты для предложений.

Проблема с записью его на диск может быть:

Как только слово открылось из временного файла или папки, пользователь создал новый документ без сохранения, а затем - нет.близкое слово(поэтому мы не могли сказать, когда процесс завершился) Или удалил временный файл или папку.Я хотел бы решение, где я мог бы контролировать слово, возможно, разместить его в приложении.Я хотел бы не записывать его в файл.есть идеи?

Ответы [ 3 ]

2 голосов
/ 12 августа 2010

Для редактирования я бы скачал файл во временную папку, а затем в вашем приложении запустил Word с помощью автоматизации:

Application app = new Application();
app.Visible = true;
Document doc = app.Documents.Open("path to temp file");

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

Вы всегда можете скрыть и / или закрыть этот экземпляр, выполнив следующие строки:

app.Visible = false;
app.Quit();

Обратите внимание , что вы должны ссылаться на Microsoft.Office.Interop.Word сборка

1 голос
/ 12 августа 2010

Единственный способ, которым я мог думать о загрузке документа в память и обойтись без диска, - это создать оперативный диск, но это может оказаться довольно сложным и потребует установки администратором для установки драйвера ramdisk .

Что касается мониторинга процессов и файлов, вы можете запустить word.exe с необходимыми параметрами, чтобы открыть документ, но вам все равно придется отслеживать файл на предмет изменений и внешний процесс должен знать, когда пользователь выходит из слова. Если пользователь никогда не сохраняет файл или закрывает слово, вы не можете ничего сделать. Word не предоставляет модель событий вне процесса.

0 голосов
/ 13 июля 2011

Вам нужно вытащить Word Doc из базы данных в файл, доступный где-нибудь (то есть во временный каталог или на виртуальный диск).

Вы можете настроить обработчик события для события VBA «сохранить», поэтому при сохранении документа вы можете загрузить измененный Word Doc обратно в базу данных.

Как говорит @Chris, если пользователь никогда не сохраняет файл или никогда не закрывает слово, вы мало что можете сделать.

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