Как стать автором
Поиск
Написать публикацию
Обновить

Отчеты в Java на основе JasperReports

Недавно возникла задача — построить отчет на Java.
Как известно, для Java есть немало как платных так и бесплатных библиотек, которые позволяют делать отчеты. Их анализ не входит в тему этого поста, скажу лишь, что мною была выбрана библиотека JasperReports, так как во-первых — бесплатная, во-вторых — наиболее функциональная из всех бесплатных. Тут и группировка и промежуточные результаты, таблицы, картинки, импорт/экспорт и много всего другого.

Итак, у нас есть:
  • сервер GlassFish 3.1
  • серверное приложение на Java EE
  • данные (получаем с помощью JPA)
  • клиентское приложение на Java
Построение отчета

Для начала работы с Jasper Reports надо сделать 2 шага:
  • скачать саму библиотеку JasperReports
  • установить iReport — дизайнер отчетов
Дизайнер может быть в виде плагина для Netbeans или отдельной программы (Windows, Linux, Mac). На сайте написано, что плагин для нетбинса версии 3.х. Но он прекрасно установился и на Netbeans 7.
После установки добавляем в проект ссылку на библиотеку и запускаем мастер создания отчетов. Выбираем Blank A4 Landscape — Open this Template. Даем имя отчету и указываем путь для сохранения.

Теперь перед нами окно конструктора. Можно либо воспользоваться дизайнером либо вручную редактировать XML.

Допустим, есть модель с несколькими полями. Пусть это будут: dateStart, dateEnd, closed, number.
@javax.persistence.Column(name = "dateStart")
private Date dateStart;
@javax.persistence.Column(name = "dateEnd")
private Date dateEnd;
@javax.persistence.Column(name = "closed")
private Boolean closed;
@javax.persistence.Column(name = "number")
private String number;

Добавляем поле (Field) для каждого из них (тут важно не забыть указать тип поля). Это важно в контексте последующей работы с группировкой и отображением данных в отчете.

После всех манипуляций в конструкторе компилируем jasper-файл отчета.

Отображение в JFrame

String reportName = "DogReport.jasper"; // полный путь к отчету
List contracstList = _getContracts(); // получаем список договоров с сервера
JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(contractsList); //создаем коллекцию Jasper Report Bean Collection
JasperPrint jp = JasperFillManager.fillReport(reportName, new HashMap(), beanCollectionDataSource); // заполняем датасет отчета данными из коллекции
JRViewer jv = new JRViewer(jp); // компонент просмотра отчета

JFrame reportFrame = new JFrame();
reportFrame.getContentPane().add(jv);
reportFrame.validate();
reportFrame.setVisible(true);


Вот и всё. В итоге у нас есть отчет с возможностью печати, настройки и импорта в PDF, Excel, PPT, ODT, HTML.

p.s. буду рад услышать альтернативные способы построения отчетов в Java.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.