2015-11-20 2 views
0

Мне нужно обновить некоторые данные поля базы данных от Delplhi до документа Word. Я должен найти конкретное поле, которое повторяется в нескольких местах в текстовом документе (таблица, пункт 1, параграф 5).Найти конкретную строку в текстовом документе и обновить

wordapp: Twordapplication; 
Bookmarkname,Bookmarkrange:Olevariant; 
Bookmarkname := 'Supplier'; 
if Wordapp.ActiveDocument.Bookmarks.Exists(BookmarkName) then //condition to check for a particular string 
begin 
BookmarkRange := Wordapp.ActiveDocument.Bookmarks.Item(BookmarkName).Range; 
BookmarkRange.InsertAfter('Database Value/String that needs to be updated in word document'); 

Я могу найти строку, а затем поместить закладку рядом с ним в слове и обновить значение в созданной с помощью закладки DELPHI кода, предоставленного выше. Моя проблема в том, что я попытался использовать одно и то же имя закладки, потому что в другом месте он не работает. Может кто-нибудь помочь? Заранее спасибо

ответ

0

Буквенный знак может существовать только в одном месте, поэтому вы не можете выполнять множественную замену с использованием этого метода.

Вы можете, однако, выполнить простой поиск и замену в автоматизации Word, чтобы вы могли использовать теги, например. {{forename}}, {{address1}} или что-то другое, и просто замените этот текст на значения из вашей базы данных.

Гораздо проще в использовании, чем закладок, так как вы можете увидеть теги в документе шаблона.

1

Вы можете использовать три закладки с (слегка) разными именами.

Или вы можете использовать элементы управления содержимым вместо закладок. Элементы управления содержимым могут иметь одинаковое название или тег (они не имеют свойства «Имя»). Document SelectionContentControlsByTitle (или ... ByTag) возвращает массив всех элементов управления содержимым в документе, тогда вы можете закодировать массив и написать им.

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

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