[Logo] Форум ПАРУС
Генерация Word документа с помощью двоичного пользовательского отчёта  XML
Индекс форума » 8.хх PL/SQL
Автор Сообщение
TIRED_NICK
Пользователь

Зарегистрирован: 04.03.2013 15:47:18
Сообщений: 365
Оффлайн

Есть решение, которым можете поделиться?
KLARIST
Пользователь
[Avatar]

Зарегистрирован: 02.11.2012 18:46:44
Сообщений: 403
От: Андрей Васильев
Оффлайн

Удобнее генерировать не doc/docx, а rtf/xml/html


P.S. интереснее всего ключ /pxslt в параметрах запуска winword.exe

Это сообщение было изменено 2 раз. Последнее изменение было в 03.03.2016 17:06:58

[Email] [ICQ]
TIRED_NICK
Пользователь

Зарегистрирован: 04.03.2013 15:47:18
Сообщений: 365
Оффлайн

В том-то и дело, что задача получить отформатированный doc/docx-документ.
Я думал, что у кого-нибудь есть решение наподобие AS_XLSX
LEUSHIN_D_K
Новичок

Зарегистрирован: 21.11.2012 18:22:48
Сообщений: 66
Оффлайн

Много страниц? Большой? Типа "приказов"? С таблицами/без? Динамическое форматирование?
[Email] [ICQ]
TIRED_NICK
Пользователь

Зарегистрирован: 04.03.2013 15:47:18
Сообщений: 365
Оффлайн

Да, около 10 страниц, естественно, с форматированием, таблицы возможны.
Сделал бы через пользовательские приложения, но заказчик попался неуступчивый - хочет в отчетах.
ANTONUKVV
Новичок

Зарегистрирован: 18.04.2013 09:41:56
Сообщений: 34
От:
Оффлайн

Насколько я понял, решение типа AS_XLSX - это просто экспорт в Excel, какое делает SQLDeveloper к примеру.
Как вы собираетесь там описывать заголовки полей, форматирование ячеек, формулы ?
Если какое то сложное форматирование, все равно не избежать знакомства с пакетом PRSG_EXCEL, это если в excel выводить данные.
Что касается формата двоичных данных, то все равно необходимо описание каждого поля как в процедуре, так и в файле.
KLARIST
Пользователь
[Avatar]

Зарегистрирован: 02.11.2012 18:46:44
Сообщений: 403
От: Андрей Васильев
Оффлайн

TIRED_NICK wrote:В том-то и дело, что задача получить отформатированный doc/docx-документ.
Я думал, что у кого-нибудь есть решение наподобие AS_XLSX

Ничто Вам не мешает получить тот же отформатированный rtf/html

P.S. и rtf и html поддерживают выравнивание, шрифты, таблицы. Если docx принципиален - то нужно будет просто подключить utl_compress, внутри он тот же самый xml

Это сообщение было изменено 2 раз. Последнее изменение было в 09.03.2016 14:02:32

[Email] [ICQ]
LEUSHIN_D_K
Новичок

Зарегистрирован: 21.11.2012 18:22:48
Сообщений: 66
Оффлайн

TIRED_NICK wrote:Да, около 10 страниц, естественно, с форматированием, таблицы возможны.
Сделал бы через пользовательские приложения, но заказчик попался неуступчивый - хочет в отчетах.


Мне кажется, что Вам подойдет RTF, как посоветовали выше, просто переименуйте его как DOCX =)
Все редакторы нормально понимают, что там на самом деле RTF и грузят без проблем.

Это сообщение было изменено 1 раз. Последнее изменение было в 09.03.2016 15:58:37

[Email] [ICQ]
TIRED_NICK
Пользователь

Зарегистрирован: 04.03.2013 15:47:18
Сообщений: 365
Оффлайн

ANTONUKVV wrote:Насколько я понял, решение типа AS_XLSX - это просто экспорт в Excel, какое делает SQLDeveloper к примеру.
Как вы собираетесь там описывать заголовки полей, форматирование ячеек, формулы ?

Этот пакет все эти возможности даёт.

KLARIST wrote:Ничто Вам не мешает получить тот же отформатированный rtf/html

Каким образом мне открыть Word с нарисованной таблицей, регулировать межстрочный интервал, "красную" строку и т.п.?
Используя классический html?
ANTONUKVV
Новичок

Зарегистрирован: 18.04.2013 09:41:56
Сообщений: 34
От:
Оффлайн

TIRED_NICK wrote:
ANTONUKVV wrote:Насколько я понял, решение типа AS_XLSX - это просто экспорт в Excel, какое делает SQLDeveloper к примеру.
Как вы собираетесь там описывать заголовки полей, форматирование ячеек, формулы ?

Этот пакет все эти возможности даёт.

Судя по описанию автора нет
The main purpose for this package is getting data from the database into an Excel file, so I deliberate did not include some Excel functionality, such as formulas, into the package. Excel itself is a far better tool for such things.

Если вам удалось использовать это решение, тогда в чем вопрос ?

KLARIST wrote:Ничто Вам не мешает получить тот же отформатированный rtf/html

Каким образом мне открыть Word с нарисованной таблицей, регулировать межстрочный интервал, "красную" строку и т.п.?
Используя классический html?
TIRED_NICK
Пользователь

Зарегистрирован: 04.03.2013 15:47:18
Сообщений: 365
Оффлайн

ANTONUKVV wrote:Если вам удалось использовать это решение, тогда в чем вопрос ?

Прочитайте внимательно мой вопрос ещё раз - необходимо получить документ Word.
Пакет AS_XLSX позволяет получить файл .xlsx.
ANTONUKVV
Новичок

Зарегистрирован: 18.04.2013 09:41:56
Сообщений: 34
От:
Оффлайн

Вам же дали ответ с примером(html файл открывающийся в word).
Пробуйте, экспериментируйте. Готового решения под ваш вариант все равно не будет.
MAGISTR_JODA
Пользователь

Зарегистрирован: 30.10.2012 19:16:48
Сообщений: 264
Оффлайн

По теме:
TIRED_NICK если вдруг начнете писать что то свое, то готов присоединиться к разработке (могу взять на себя например реализацию функционала таблиц). Я так понимаю, что можно сделать по аналогии с пакетом AS_XLSX.


so I deliberate did not include some Excel functionality, such as formulas, into the package

Кстати в своем варианте пакета AS_XLSX я реализовал функциональность формул и вставки графических файлов...
[Email] [WWW] [ICQ]
TIRED_NICK
Пользователь

Зарегистрирован: 04.03.2013 15:47:18
Сообщений: 365
Оффлайн

MAGISTR_JODA wrote:Я так понимаю, что можно сделать по аналогии с пакетом AS_XLSX.

Я давеча нарыл решение для комплексной работы с офисными приложениями.
Но лишних $900 пока в бюджете нет.
MAGISTR_JODA
Пользователь

Зарегистрирован: 30.10.2012 19:16:48
Сообщений: 264
Оффлайн

Написал в личку.
[Email] [WWW] [ICQ]
DOROSHEV_VV
Новичок

Зарегистрирован: 07.08.2013 13:34:30
Сообщений: 14
Оффлайн

Тема старая, но может быть кому-нибудь пригодится.
Есть решение на Java, Apache POI.
Конечно, интегрировать в промышленные системы такие решения - это не лучшая практика, но, после тестов, мне помогло автоматизировать несколько рутинных задач.
Пакет позволяет создавать документы MS Office на языке Java, в том числе и Word.

ВНИМАНИЕ!!! Установку производите на свой страх и риск. ТОЛЬКО на тестовый сервер, и лучше несколько раз повторить. Задача не тривиальна, может произойти все, что угодно.

Для установки нам понадобится Apache POI: https://archive.apache.org/dist/poi/release/src/poi-src-3.10-FINAL-20140208.zip. Версия 3.10 последняя для Oracle 11g. Упирается в версия Java-машины. В 11g версия 1.6. Распаковываем дистрибутив.
Лично у меня не получилось установить без еще одного пакета, jaxen-1.1-beta-6.jar. Он входит в состав dom4j-1.6.1. https://sourceforge.net/projects/dom4j/files/dom4j/1.6.1/dom4j-1.6.1.zip/download
Из архива брал только dom4j-1.6.1\lib\jaxen-1.1-beta-6.jar.

Порядок установки:
1. Правами на импорт классов по-умолчанию обладает только SYS. Если импортируем под другим пользователем, надо выдать ему права. Если не прав - поправьте.

2. Импортируем классы. Я это делал на сервере. В runtime-клиенте Oracle этого инструмента нет. Если знаете другой способ - укажите.
Для этого нам потребуется loadjava.bat. Находится он, например, в "c:\oracle\product\11.2.0\dbhome_1\BIN\". Зависит от пути установки
Далее, в таком порядке


Пути и параметры соединения с БД, понятное дело, надо заменить на свои.

В процессе импорта выдается много ошибок, какие-то классы отсутствуют. Я пытался их находить, подставлять, они не импортировались, для них нужны были еще другие классы...
Методом проб и ошибок, пришел к выводу, что указанных выше достаточно. А недостающие классы в виде классов-пустышек создаются с ключем . При этом, в каталоге создается jar файл с этими пустыми классами (poi-ooxml-schemas-missing.jar в примере)
Создавал Excel-документы, пробовал примеры создания Word-документов. Пока никаких проблем не обнаружил.

Если требуется удалить созданные классы (а их чуть ли не больше 10 тысяч), выполняем команды


В архиве Apache POI есть примеры работы. Почти не один без обработки напильником не запустился (на мой взгляд, пример создан в более ранней версии POI).

Что этот пакет позволил сделать для меня:
1. Автоматизированное формирование документов Excel, отправка адресату сервером в виде задания. Получатель принимает только Excel в старом формате (*.xls).
2. Формирование пользовательских отчетов с большим числом строк и сложным форматированием. 20 тысяч строк за пол минуты не проблема. Попробуйте сделать стандартным пакетом
3. Загрузка Государственного реестра предельных отпускных цен с сайта МЗ РО по заданию (данные в виде старого формата *.XLS).

Во вложениях маленький пример. Файл создает на сервере.

P.S. Сильно не ругайте если где-то ошибся в терминах, для меня это все ново.
 Имя файла 03. Использование.tst [Disk] Скачать
 Описание Вызов
 Размер файла 282 bytes
 Загружено:  25 раз(а)

 Имя файла 01. Java_source.jsp [Disk] Скачать
 Описание Исходный код на Java
 Размер файла 1 Kbytes
 Загружено:  3 раз(а)

 Имя файла 02. Обертка_PL_SQL.sql [Disk] Скачать
 Описание Обертка процедурой PL/SQL
 Размер файла 235 bytes
 Загружено:  4 раз(а)

PSYDIAMOND
Пользователь
[Avatar]

Зарегистрирован: 30.10.2013 12:04:55
Сообщений: 614
От: Михаил Малыхин
Оффлайн

многобукв
а нет ли у кого под рукой пакета, который парсит docx ( например прикрепленный файл к отчетам а-ля двоичные даннные) и в то же время умеет работать с закладками (как в приказах П7/П10)?
[Email]
MAGNIFIER
Новичок

Зарегистрирован: 18.10.2012 14:59:38
Сообщений: 7
Оффлайн

DOROSHEV_VV wrote:3. Загрузка Государственного реестра предельных отпускных цен с сайта МЗ РО по заданию (данные в виде старого формата *.XLS).


Коллега, если это еще актуально, справочник "Государственный реестр предельных отпускных цен производителей на лекарственные препараты, включенные в перечень жизненно необходимых и важнейших лекарственных препаратов" доступен в удобном виде через REST-API Минздрава:

https://nr-test.egisz.rosminzdrav.ru/rest/refs/part?id=5&part=1
[Email]
DOROSHEV_VV
Новичок

Зарегистрирован: 07.08.2013 13:34:30
Сообщений: 14
Оффлайн

MAGNIFIER wrote:
Коллега, если это еще актуально, справочник "Государственный реестр предельных отпускных цен производителей на лекарственные препараты, включенные в перечень жизненно необходимых и важнейших лекарственных препаратов" доступен в удобном виде через REST-API Минздрава:

https://nr-test.egisz.rosminzdrav.ru/rest/refs/part?id=5&part=1


Спасибо. Насколько актуальны данные? Например, на https://www.rosminzdrav.ru/opendata ерунда какая-то. Дата последнего изменения 10.02.2017, и только исключенные препараты. Ну или я чего не понял
 
Индекс форума » 8.хх PL/SQL
Перейти: