Форум » [x]Harbour » Как использовать DOC-файл в качестве шаблона ? » Ответить

Как использовать DOC-файл в качестве шаблона ?

Andrey: Всем привет. Подскажите как можно реализовать печать Word-документа, в котором в нужном месте нужно поставить значение из полей БД или просто вычисляемые переменные (штук 20). Т.е. есть заготовка SAMPLE.DOC, в ней нужно поставить в нужных местах @POLE_NUM и т.д., а в программе на хХарборе, открыть этот документ (это я знаю как) и проставить по всем @xxxxx соответствующие значения (это я не знаю как). Может это нужно делать по другому, тогда подскажите как. Заранее спасибо.

Ответов - 33, стр: 1 2 All

Петр: i это индех обьекта Pane из коллекции Panes, как правило в несложных случаях используйте i := 1, не ошибетесь. Из справки : A window has more than one pane if the window is split or the view is not print layout view and information such as footnotes or comments are displayed.

Лукашевский: Ещё раз спасибо.

Andrey: Подскажите пожалуйста, как программно задать параметры страницы документа ?


Петр: #xtranslate CentimetersToPoints( <w> ) => (<w> * 28.35 ) oWord := CreateObject( "Word.Application" ) oWord:Documents:Add() WITH OBJECT oWord:ActiveDocument:PageSetup :TopMargin := CentimetersToPoints(2.1) :BottomMargin := CentimetersToPoints(2.1) :LeftMargin := CentimetersToPoints(2.3) :RightMargin := CentimetersToPoints(1.7) :Gutter := CentimetersToPoints(0) :HeaderDistance := CentimetersToPoints(1.25) :FooterDistance := CentimetersToPoints(1.25) :PageWidth := CentimetersToPoints(21) :PageHeight := CentimetersToPoints(29.7) // и т.д. END WITH

Лукашевский: Есть ли в xHarbour'е функция OleUninitialize() ? А то я раскопал Harbour'ный примерчик, а линковка на эту функцию выдаёт ошибку Unresolved external... Очень было бы полезно это и в xHarbour, а то если программа вываливается на ошибке в процессе работы объектом OLE, то объект так и остаётся висеть в системе, и пока его задачу не снимешь, ничего с файлом с тем же именем, что был открыт (например PRICELST.DBF) сделать невозможно! Ну не объяснять же юзверям - нажмите Alt Ctrl Del и так далее, - они же десять раз нажмут, запустят перезагрузку компа и меня же в этом обвинят!

Pasha: Функция OleUninitialize() в этом случае не поможет, так как для снятия приложения необходимо напрямую вызвать некоторый метод. К примеру, для MS Office - это oWord:Quit(), oExcel:Quit() Вызов такого метода можно прописать в exit-процедуре. К примеру: if ValType(oWord) == 'O' oWord:Quit() endif или ловить ошибку в begin sequence - end

Лукашевский: Pasha пишет: OleUninitialize() в этом случае не поможет А для чего она тогда вообще предназначена? Мне же не обязательно снимать приложение, достаточно закрыть OLE-объект, связанный с файлом. Но этот разговор ни о чём - функции-то нет... Pasha пишет: if ValType(oWord) == 'O' oWord:Quit() endif И ещё oWord надо объявлять как public... Но да, наверное придётся так.

Pasha: Лукашевский пишет: А для чего она тогда вообще предназначена? функция WINOLEAPI OleInitialize(IN LPVOID pvReserved); инициализирует библиотеку ole, а функция WINOLEAPI_(void) OleUninitialize(void); закрывает ее и освобождает все ресурсы Запущенные приложения надо закрывать их методами Вместо exit-процедуры можно ловить ошибку стандартными средствами clipper/harbour

Лукашевский: Pasha пишет: Запущенные приложения надо закрывать их методами Да не приложение мне надо закрыть, а по-минимуму - всего лишь объект! Вот я и думал, что может OleUninitialize() закрывает все созданные программой OLE-объекты... Кстати говоря, OLE вроде бы срабатывает шустрее, если Word или там Excel на момент обращения к OLE висит в памяти.

Pasha: Лукашевский пишет: Да не приложение мне надо закрыть, а по-минимуму - всего лишь объект! Обьект TOleAuto и запущенное приложение - это разные вещи Обьект само собой закрывается, т.е выполняется его деструктор end При этом приложение остается в памяти.

Лукашевский: Pasha пишет: Обьект TOleAuto и запущенное приложение - это разные вещи И я именно об этом, о том что объект можно закрыть без закрытия самого приложения... А ты всё о закрытии приложений толкуешь... А oWord:Quit() закрывает и объект, и приложение.

Andrey: Кто работает с Офисом - смотрите ссылку: http://www.script-coding.com/MSOffice.html использование COM-серверов MS Office в скриптах Конвертация форматов файлов (Save As...) с помощью Excel и Word И т.д. Разработка скриптов - http://www.script-coding.com/index.html

pureproft: Уж коли заявлена мультиплатформенность инструмента смотри в сторону abiword ... с документом можно работать фактически как с текстом обычным парсингом или как XML



полная версия страницы