Автор | Сообщение |
|
| постоянный участник
|
Пост N: 307
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.07.07 23:10. Заголовок: Как использовать DOC-файл в качестве шаблона ?
Всем привет. Подскажите как можно реализовать печать Word-документа, в котором в нужном месте нужно поставить значение из полей БД или просто вычисляемые переменные (штук 20). Т.е. есть заготовка SAMPLE.DOC, в ней нужно поставить в нужных местах @POLE_NUM и т.д., а в программе на хХарборе, открыть этот документ (это я знаю как) и проставить по всем @xxxxx соответствующие значения (это я не знаю как). Может это нужно делать по другому, тогда подскажите как. Заранее спасибо.
|
|
|
Ответов - 33
, стр:
1
2
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 665
Зарегистрирован: 09.10.06
|
|
Отправлено: 27.05.09 22:39. Заголовок: i это индех обьекта ..
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.
|
|
|
|
| |
Пост N: 306
Зарегистрирован: 08.04.06
|
|
Отправлено: 27.05.09 22:46. Заголовок: Re: Петр
Ещё раз спасибо.
|
|
|
|
| постоянный участник
|
Пост N: 869
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.06.09 19:50. Заголовок: Подскажите пожалуйст..
Подскажите пожалуйста, как программно задать параметры страницы документа ?
|
|
|
|
| постоянный участник
|
Пост N: 673
Зарегистрирован: 09.10.06
|
|
Отправлено: 08.06.09 20:40. Заголовок: #xtranslate Centimet..
#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
|
|
|
|
| |
Пост N: 338
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.06.09 11:12. Заголовок: Есть ли в xHarbour..
Есть ли в xHarbour'е функция OleUninitialize() ? А то я раскопал Harbour'ный примерчик, а линковка на эту функцию выдаёт ошибку Unresolved external... Очень было бы полезно это и в xHarbour, а то если программа вываливается на ошибке в процессе работы объектом OLE, то объект так и остаётся висеть в системе, и пока его задачу не снимешь, ничего с файлом с тем же именем, что был открыт (например PRICELST.DBF) сделать невозможно! Ну не объяснять же юзверям - нажмите Alt Ctrl Del и так далее, - они же десять раз нажмут, запустят перезагрузку компа и меня же в этом обвинят!
|
|
|
|
| Администратор
|
Пост N: 1161
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.06.09 12:23. Заголовок: Функция OleUninitial..
Функция OleUninitialize() в этом случае не поможет, так как для снятия приложения необходимо напрямую вызвать некоторый метод. К примеру, для MS Office - это oWord:Quit(), oExcel:Quit() Вызов такого метода можно прописать в exit-процедуре. К примеру: if ValType(oWord) == 'O' oWord:Quit() endif или ловить ошибку в begin sequence - end
|
|
|
|
| |
Пост N: 339
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.06.09 15:09. Заголовок: Pasha пишет: OleUni..
Pasha пишет: цитата: | OleUninitialize() в этом случае не поможет |
| А для чего она тогда вообще предназначена? Мне же не обязательно снимать приложение, достаточно закрыть OLE-объект, связанный с файлом. Но этот разговор ни о чём - функции-то нет... Pasha пишет: цитата: | if ValType(oWord) == 'O' oWord:Quit() endif |
| И ещё oWord надо объявлять как public... Но да, наверное придётся так.
|
|
|
|
| Администратор
|
Пост N: 1163
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.06.09 15:44. Заголовок: Лукашевский пишет: ..
Лукашевский пишет: цитата: | А для чего она тогда вообще предназначена? |
| функция WINOLEAPI OleInitialize(IN LPVOID pvReserved); инициализирует библиотеку ole, а функция WINOLEAPI_(void) OleUninitialize(void); закрывает ее и освобождает все ресурсы Запущенные приложения надо закрывать их методами Вместо exit-процедуры можно ловить ошибку стандартными средствами clipper/harbour
|
|
|
|
| |
Пост N: 343
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.06.09 15:51. Заголовок: Pasha пишет: Запуще..
Pasha пишет: цитата: | Запущенные приложения надо закрывать их методами |
| Да не приложение мне надо закрыть, а по-минимуму - всего лишь объект! Вот я и думал, что может OleUninitialize() закрывает все созданные программой OLE-объекты... Кстати говоря, OLE вроде бы срабатывает шустрее, если Word или там Excel на момент обращения к OLE висит в памяти.
|
|
|
|
| Администратор
|
Пост N: 1164
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.06.09 16:25. Заголовок: Лукашевский пишет: ..
Лукашевский пишет: цитата: | Да не приложение мне надо закрыть, а по-минимуму - всего лишь объект! |
| Обьект TOleAuto и запущенное приложение - это разные вещи Обьект само собой закрывается, т.е выполняется его деструктор end При этом приложение остается в памяти.
|
|
|
|
| |
Пост N: 345
Зарегистрирован: 08.04.06
|
|
Отправлено: 15.06.09 16:33. Заголовок: Pasha пишет: Обьект..
Pasha пишет: цитата: | Обьект TOleAuto и запущенное приложение - это разные вещи |
| И я именно об этом, о том что объект можно закрыть без закрытия самого приложения... А ты всё о закрытии приложений толкуешь... А oWord:Quit() закрывает и объект, и приложение.
|
|
|
|
|
| постоянный участник
|
Пост N: 2304
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.08.12 15:20. Заголовок: Кто работает с Офисо..
|
|
|
|
| |
Пост N: 40
Зарегистрирован: 15.12.09
|
|
Отправлено: 27.08.12 12:15. Заголовок: Уж коли заявлена мул..
Уж коли заявлена мультиплатформенность инструмента смотри в сторону abiword ... с документом можно работать фактически как с текстом обычным парсингом или как XML
|
|
|
Ответов - 33
, стр:
1
2
All
[только новые]
|
|