Форум » GUI » Нужно сохранить отчет в формате .DOC для Microsoft Word . КАК? » Ответить

Нужно сохранить отчет в формате .DOC для Microsoft Word . КАК?

Softlog86: Пока предполагаю по аналогии с .XLS созданием методом OLE . У меня отчет - бланк Наряд-заказа с СТО с реквизитами сторон , тремя таблицами и итогами .... Для красоты несколько линий для разделения тематики .

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

Andrey: Softlog86 пишет: Пока предполагаю по аналогии Ну и ??? Дальше предположений дело ушло ??? Открыт уже документ или еще не открыт документ, внесены реквизиты в документ или нужно ещё только внести, да и сохранять по разному можно.... Поищи здесь на форуме, я давно в хХарборе выкладывал рабочий пример создания/записи doc-файла. С помощью наших ГУРУ мне удалось тогда сделать рабочую версию программы. У себя поискал, не нашёл. Ищи здесь на форуме.

Dima: поиск на форуме Word.Application

Softlog86: Уточнение : Документ готовится для печати через MiniPrint - функции . Хочется добавить Экспорт(сохранение) этого документа в .DOC для дальнейшей обработки средствами MicrosoftWord уже другими людьми на других компах . Пока не могу понять как работать с таблицами ( заполнять данные , располагать на листе ) , рисование линий , и т д . Был-бы признателен за какой-нибудь пример


Dima: Softlog86 Почему бы сразу все не формировать через MS WORD ?

Andrey: Softlog86 пишет: Уточнение : Документ готовится для печати через MiniPrint - функции . Хочется добавить Экспорт(сохранение) этого документа в .DOC для дальнейшей обработки средствами MicrosoftWord Это кто же сделает тебе программу экспорта из MiniPrint в DOC файл ? По моему doc-файл закрытый формат и его право имеют использовать только Microsoft, т.е. создавать файлы такого формата. Читать могут все. Но может я и ошибаюсь.

Softlog86: Андрей , ты не понял . Нужна помощь именно в моментах вроде 'как нарисовать линию' и 'как вставить (создать) таблицу внутри документа' . Затем сохранение готового листа в файл ..... Разумеется всё это посредством вызова OLE MSWord .

Dima: Softlog86 пишет: Нужна помощь именно в моментах вроде 'как нарисовать линию' и 'как вставить (создать) таблицу внутри документа' . Это нужно сделать в miniprint или в OLE MSWord ?

Andrey: Давай по шагам (сам страдаю косноязычием, не всегда могу объяснить чего я хочу). 1) Имеется готовый уже файл doc ? 2) Открываем его и рисуем линию, таблицу и т.д. ? Так ?

Dima: Andrey пишет: Давай по шагам (сам страдаю косноязычием, не всегда могу объяснить чего я хочу). Жесть , он же писал что в Miniprint все делает. Читал ? :)

Andrey: Dima пишет: Жесть , он же писал что в Miniprint все делает. Читал ? :) Softlog86 пишет: Андрей , ты не понял . Нужна помощь именно в моментах вроде 'как нарисовать линию' и 'как вставить (создать) таблицу внутри документа' . Затем сохранение готового листа в файл ..... Разумеется всё это посредством вызова OLE MSWord . ?

Softlog86: Сейчас форма выводится вот такими командами : -------------------------------------------------------- SELECT PRINTER mPrinter ORIENTATION PRINTER_ORIENT_PORTRAIT PREVIEW START PRINTDOC NAME "ZAKAZ-NARYAD" START PRINTPAGE @ 15 , 80 PRINT 'ЗАКАЗ-НАРЯД № '+MyORDER FONT 'ARIAL' SIZE 15 BOLD @ 25 , 20 PRINT 'Заказчик:' FONT 'ARIAL' SIZE 8 @ 30 , 20 PRINT 'Адрес:' FONT 'ARIAL' SIZE 8 .......................................................................... // Рамка-заголовок @ 45 , 10 PRINT RECTANGLE TO 52, 200 PENWIDTH 0.2 COLOR YELLOW FILLED ROUNDED @ 46 , 20 PRINT 'Марка' @ 46 , 50 PRINT 'Модель' ....................................................................... // Вывод содержимого таблицы ВЫПОЛНЕННЫЕ РАБОТЫ For i:=1 to N @ Start , 10 PRINT RECTANGLE TO Start+Pripusk, 200 PENWIDTH 0.2 COLOR BLACK // Рамка @ Start+Dta,10+2 PRINT ALSTR(i) FONT 'ARIAL' SIZE 8 // No @ Start+Dta,20 PRINT LEFT(UPPER(ADATA1[i,1]),50) FONT 'ARIAL' SIZE 8 // Наименование работ/услуг @ Start+Dta,145 PRINT ADATA1[i,2] FONT 'ARIAL' SIZE 8 // Норматив времени Start:=Start+Pripusk //Припуск в ММ NEXT i // Вертикальные линии (столбцы ) @ sBegin , 18 PRINT LINE TO Start,18 PENWIDTH 0.2 COLOR BLACK @ sBegin ,130 PRINT LINE TO Start,130 PENWIDTH 0.2 COLOR BLACK ................................................................................................................. Start:=Start+3 @ Start ,115 PRINT 'Всего по заказ-наряду: '+ALSTR(Itogo_WORK+Itogo_GOODS)+'.р' FONT 'ARIAL' SIZE 10 END PRINTPAGE END PRINTDOC ------------------------------------------------------------------------------------------------------------------------------ Задача - сделать такой-же отчет , только в .DOC . Видимо придётся писать что-то подобное для вывода через OLE : 1) Запускаем WORD если он не был открыт до этого 2) Создаём пустой лист 3) Заполняем информацией 4) Сохраняем в .DOC 5) Закрываем WORD (если открыт этой программой) Трудности в незнании некоторых команд внутри самого WORD : Как вставлять (рисовать?) таблицы . Рисование рамок , линий и т д . Думал найти готовый пример ....

Dima: Softlog86 пишет: Трудности в незнании некоторых команд внутри самого WORD Поюзай макросы в самом Word и посмотри что он использует на нужных тебе операциях.

petr707: Варианты: 1) использование шаблонов отчетов в том же формате, что и отчет (XLS ,DOC, RTF ..). Для каждого отчета -свой файл шаблона. В шаблоне - тэги для замены на реальные значения при формировании отчета. Пример развития - FastReport 2)Стандартизуете вывод с miniprint не в конечный отчет,а в полуфабрикат(метаязык), который потом универсальным (своим же) модулем будете перегонять в DOC, XLS,RTF... Пример - формат PDF или XPS 3)Сразу создать PDF-файл, библы есть. Кстати, сразу можно решить проблему защиты готового документа от корректировки недобросовестным юзером. Просмотр и печать отчетов можно либо AdobeReader или Sumatra, оба Freeware 4) Вывод через OLE как правило требует для подготовки отчета наличие компонента, то есть возникает требование, что на компе юзера MS Word должен быть, а это уже принудительны затраты юзера. Можно было бы использовать OpenOffice, но иногда юзер не хочет иметь лишние компоненты на своем компе. 5)...ну и т.д.

Softlog86: Метод с шаблонами наиболее удобен . Помогите разобраться в части тэгов и работы с ними . Лучше на примере :)

petr707: Поищу примеры, еще на Клиппере видел у кого-то. Но все достаточно просто. Создаете файл нужного формата, в определеном месте документа размещаете тэг, скажем #Title При создании отчета вместо #Title вставляете значение своей программной переменной Title Тэги типа таблицы $Table - посложнее, но все равно нетрудно.

Andrey: Softlog86 пишет: 1) Запускаем WORD если он не был открыт до этого 2) Создаём пустой лист 3) Заполняем информацией xHarbour\tests\testole.prg и далее Dima пишет: поиск на форуме Word.Application http://clipper.borda.ru/?1-4-0-00000218-000-0-0-1346058933 и др.

ZAlex: Во времена, когда все писалось на Clipper, а появились лазерные принтеры и отчеты пользователи захотели видеть красивыми, очень помогла утилитка RepoRTF(генератор отчетов в Word'овском формате RTF, а также в форматах txt и html). До этого все отчеты генерились в собственном генераторе отчетов, потребовались минимальные переделки программ, чтобы все генерировалось через переходник. Довольно сложные отчеты с несколькими уровнями детализации получалось делать. О утилитке можно более подробно почитать на http://www.vsi.ru/~apl (взято из документации). Утилитка бесплатная, шла с исходными кодами на C и Pascal. При желании наверное можно было бы переписать, чтобы прилинковывать к Harbour программам, но знаний не хватает. На ПК пользователя должен присутствовать Word. В архиве поставки есть множество примеров-шаблонов.

Andrey: У себя еще на Клипере сделал и до сих пор пользуюсь отчетами в RTF. Считываю внешний файл dogov_dom.info (как ини), считываю rtf-файл указанный в .info как строку, делаю влоб замену строк в файле (типа '`01' на 'ALLTRIM(STR(FIELD->Ndog))' ), далее сохраняю эту строку во временную папку как rtf-файл и открываю этот файл через WORD (открывать можно и через Open Office). С 2000 года работает. Правда нужно аккуратно делать разметку в rtf. Вот пример dogov_dom.info: [Настройка] Имя_формы = "Договор-приватизации на дом" Файл_шаблона = "dogov_dom.rtf" Отладка = .F. [Поля] Поле_1 = { '`01' , 'ALLTRIM(STR(FIELD->Ndog))' } Поле_2 = { '`02' , 'SAY_DATA(FIELD->DateDog)' } Поле_3 = { '`03' , 'MEMOLINE(PRIV_FIO(9),77,1)' } Поле_4 = { '`04' , 'MEMOLINE(PRIV_FIO(9),77,2)' } .... Поле_8 = { '`05' , 'PRIV_ADRES(2)' } Поле_10 = { '`07' , 'DTOC(FIELD->DateOrder)' } Поле_15 = { '`73' , 'TRANSFORM(FIELD->DateInv,"99.99.9999")' } А в тексте RTF выглядит так:

Dima: Andrey пишет: и открываю этот файл через WORD (открывать можно и через Open Office). А можно и средствами Wordpad , он входит в OS

Vlad04: А можно и средствами Wordpad Он таблицы не поддерживает



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