Подходящесть репгена определяется кучей критериев, по большей части проектоспецифичных. Такие критерии есть и у меня:
- Главный критерий - поддержка PyQt, в крайнем случае Qt, написание биндера - задача решаемая. В идеале репген должен быть написан на Qt и в поставке иметь биндер для PyQt.
- Наличие симпатичного и простого в использовании визуального дизайнера шаблонов отчетов.
- Возможность печати предпросмотра, печати и экспорта в какие-нибудь распространенные форматы.
- Поддержка кросс-таблиц.
- Очень желательно использование парадигмы бэндов, бо так привычнее.
OpenRPT мне совсем не понравился, больно страшненький дизайнер у него, биндера к PyQt нет и отсутствует документация, что значит перекапывание кучи кода для написания биндера. Короче, отвернуло.
А вот NCReport понравился. Профессионально выглядящий дизайнер, биндер прилагается, достаточное количество документации - все хорошо. По п.4, правда, не удовлетворил, но разработчики скоро обещают. Еще одна незадача - платный. Но сегодня не об этом. Сегодня я расскажу, как приготовить NCReport для употребления в PyQt. Для приготовления использовалась кухонная утварь следующих версий:
- NCReport 2.6.2
- PyNCReport 2.6.0
- MSVC 2008
- Python 2.7
- Qt 4.7.3, сборка MSVS2008
- PyQt 4.8.4
Повторюсь: разработка ведется под Windows, пробовать собирать биндер под Linux просто нет времени.
Установка репгена
Для начала нужно установить сам NCReport:- Скачать дистрибутив для Windows, сборка MSVS2008
- Запустить инсталлятор, устанавливать с параметрами по-умолчанию
Сборка и установка биндера
- Установить всю вышеперечисленная утварь (естественно, кроме PyNCReport).
- Скачать архив PyNCReport и распаковать его куда-нибудь (
) - Открыть консоль MSVS2008 ((Пуск/Все программы/Microsoft Visual Studio 2008/Visual Studio Tools/Visual Studio 2008 Command Promt)
- Выполнить в консоли следующие команды (консоль после этого не закрывать):
cd PyNCReportDir python configure.py
- Заменить все вхождения "C:\Qt\4.7.*" в файле
\Makefile на путь к директории, куда установили Qt, по-умолчанию "C:\Qt\4.7.3" - В консоли MSVS2008 выполнить команду
nmake
- Для установки собранного биндера в консоли MSVS2008 выполнить команду
nmake install
Проверка работоспособности биндера
В консоли питона выполнить>>> import PyNCReportПитон может наругаться на невозможность загрузить dll, скорее всего он не может найти зависимости для PyNCReport.pyd - python27.dll и/или ncreport2.dll. Нужно прописать пути к этим dll в переменную окружения PATH. Можно также самостоятельно посмотреть зависимости для PyNCReport.pyd и как они грузятся, утилитой Dependency Walker
Спасибо за заметку. Весьма полезная информация.
ОтветитьУдалитьНо вот незадача, на всех страницах отчёта на нижнем колонтитуле красуется "Generated by NCReport 2.0.7 EVALUATION VERSION © 2006-2012 NociSoft/Helta Kft. http://www.nocisoft.com".
Да, есть такое. Я вскользь упоминал, что NCReport платный. Такой нижний колонтитул генерит пробная версия, это ее единственное отличие от полной. Моего тогдашнего заказчика это не беспокоило, я и не заострялся.
УдалитьСозданное при помощи этой библиотеки приложение через какое-то время не прекратит работать? т.е. это не пробная версия с ограниченным сроком эксплуатации?
ОтветитьУдалитьЕсли не сложно (буду бесконечно благодарен :-)) если-бы Вы привели небольшой пример использования NCReport из PyQt
Ну что вам хорошего сказать... Как-то изменилось все у них на сайте с того времени, как я туда последний раз заходил. Раньше встречал четкое упоминание об отличии пробной версии от полной - наличие нижнего колонтитула. Сейчас приведены мутноводные terms of use, где ничего нет об ограничениях пробной версии. Думаю, имеет смысл спросить у них самих.
УдалитьМогу предположить, что пробный период они вводить таки не стали, но нужно убедиться. Я им напишу, самому интересно стало.
Что касается примера, нужно поднять что-нибудь из старых проектов, все собрать, убедиться в работоспособности, упростить для примерности. К сожалению, до Нового Года я вряд ли найду для этого время. Тем более, раз тема поднялась, хочется собрать последнюю версию, посмотреть новые плюшки, в т.ч. кросс-таблицы. Также неплохо было бы подробнее остановиться на лицензировании.
В общем, я запланировал ко второй половине января запостить новую статью с обновлением сборочной инструкции до последних версий софта, также опишу отличия пробной версии от лицензионной и приведу рабочие примеры использования PyNCReport, в т.ч. и с использованием кросс-таблиц.
К вам будет просьба пнуть меня не стесняясь во второй половине января, если обуяет меня великая новогодняя лень :) Но постараюсь не довести :) Спасибо за интерес.
P.S. Но денег же они хотят...
Спасибо большое.
ОтветитьУдалитьБудет лучше если Вы им напишите, т.к. не силён в англ.
Буду ждать статьи, но во второй половине января начну беспокоить :-)
Для моих любительских целей стоимость софтины неподъёмная :-(, но уж больно понравилась.
С наступающим!
Обнаружил ещё такую штуку - eXaro
ОтветитьУдалитьОписание:
eXaro - это свободный генератор отчетов подобно Jasper или Crystal.
eXaro очень просто втраивается в любое приложение написанное с помощью кроссплатформенного тулкита Qt.
Имеет встроенный графический дизайнер отчетов, предпросмотр сгенерированных отчетов, поиск по содержимому отчета.
Позволяет экспортировать отчеты в несколько различных форматов.
http://www.crossplatform.ru/node/565
http://code.google.com/p/exaro/
http://www.prog.org.ru/topic_22437_0.html
Но не знаю возможно ли её будет использовать из PyQt...
Сам обёртку не смогу написать :-(
На момент написания статьи eXaro даже не заводился, по крайней мере я не смог. Поэтому и не был включен в список репгенов, теоретически способных работать в продакшне. Возможно сейчас что-то и изменилось, нужно посмотреть.
УдалитьА написание PyQt-биндера для более-менее сложной Qt-библиотеки, таки да, задача нетривиальная. Для примера взгляните на исходники тех же PyQt или PyNCReport.
Сходил, посмотрел... Пациент скорее мертв, чем жив, последнее шевеление в августе 2009, забудьте.
УдалитьЗдравствуйте! Хотелось бы вернуться к начатому разговору о NCReport :-)
ОтветитьУдалитьВы не знаете, созданное при помощи этой библиотеки приложение через какое-то время не прекратит работать?
т.е. это не пробная версия с ограниченным сроком эксплуатации?
буду благодарен если-бы Вы привели небольшой пример использования NCReport из PyQt4.
И имеется ли возможность средствами NCReport нарисовать геометрическую фигуру в произвольном месте...
скажем, закрашенный прямоугольник на нижнем колонтитуле :-)
Про ограничения пробной версии написал, про примеры позже, сейчас совсем некогда. Про закрашенный прямоугольник в нижнем колонтитуле напишите мне на почту kaa.mobil&gmail.com
ОтветитьУдалить