![]() |
Модераторы: MetalFan |
![]() ![]() ![]() |
|
Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: нет Всего: 3 |
Скажите, пожалуйста, как происходит работа с шаблонами MS Word с помощью Delphi. Т.е. есть подготовленный шаблон в MS Word'e, а в нужные поля этого шаблона должна пуступать информация из программы. если можно поделитесь информацией или примерами по данному вопросу.
-------------------- ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 5 Всего: 130 |
Конкретно с шаблоном не работал, но вот пример заполнения нужных полей в файле .doc:
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: нет Всего: 3 |
А как при этом должен выглядеть документ ворда, нужно ли там <zeus1>, <zeus2> обрамлять в тег var. Просто хотелось бы увидеть пример, чтобы он показывал: 1. как создать в *.dot переменные (сейчас вычитал, что это так называемые bookmark'еры), чтобы в них попадала информация из нашей программы. как должен выглядеть наш код, который передавал бы конкретные значения в наши переменные заданные в *.dot 2. в шаблоне помимо текста будет таблица динамическая, ее размер - число строк и колонок должно формироваться из программы, возникает вопрос во-первых как программно сформировать такую таблицу и вывести ее в нужном месте. Это сообщение отредактировал(а) Delphist - 6.1.2010, 10:50 -------------------- ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
Regulum |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 16.6.2009 Репутация: 1 Всего: 1 |
1. Вашу задачу в двух словах не решить. Ознакомьтесь с азами работы в MS Office из Delphi, например в книгах:
Корняков В.Н. Программирование документов и приложений MS Office в Delphi. - СПб.: БХВ-Петербург,2005. Архангельский А.Я. Приемы программирования в Delphi на основе VCL. - М.: БИНОМ, 2006 2. Непонятно, зачем использовать шаблоны, если текст документа формируется динамически из программы. Шаблоны целесообразно использовать в документах типа квитанций или платежек, где объем вставляемого программно текста намного меньше статического. Вот простейший пример, от которого можно начинать плясать
Вот, собственно, и почти все приемы, которые вам понадобятся. Подробнее о настройках есть в книгах |
|||
|
||||
Regulum |
|
||||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 16.6.2009 Репутация: 1 Всего: 1 |
Никаких тегов в документе Word не нужно. Однако лучше каким-то образом выделять заменяемый текст, чтобы он наверняка не совпадал с другим фрагментом документа, который заменять не нужно. Ну например так: <текст, который надо заменить> или так ###текст, который надо заменить&. Механизм вставки при этом такой: ищем фрагмент, который надо заменить и заменяем его полезной информацией. Простейшая реализация:
PS. Прошу прощения, не нашел, как объединить 2 поста в один. Уважаемый модератор, не судите строго за 2 поста подряд. Это сообщение отредактировал(а) Regulum - 7.1.2010, 09:43 |
||||
|
|||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 5 Всего: 130 |
Нет, просто я обрамляю тегами для удобства. А по факту - в моём примере реализуется просто поиск-замена слова. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
ZVano |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: нет Всего: 4 |
Используем подстановочные ключи вида <#НазваниеПодстановки>
Используем компонент fWApp:TWordApplication; 0. Создаем функцию, которая должна вернуть значение тега по его имени "_TagText".
1. Настраиваем поиск. все переменные "_ИмяПеременной" типа OleVariant;
2. Ищем и заменяем ключи
PS: Лучше сохранять в массив объект fWApp.Selection.Range т.к. при изменении текста перед найденым фрагментом не нужно заботиться о смещении позиции. Это сообщение отредактировал(а) ZVano - 12.2.2010, 12:08 -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |