JasperReports
JasperReports — это Java-библиотека для создания отчётов. На основе XML-шаблонов отчётов генерируются готовые для печати документы, консолидирующие данные из различных источников (JDBC, JavaBean, XML, CSV, XLS). Отчёты могут выводиться на экран, принтер, либо в форматы PDF, RTF, HTML, XLS, CSV и XML.
JasperReports | |
---|---|
Тип | Java-библиотека |
Разработчик | Jaspersoft |
Написана на | Java[1] |
Операционная система | Кроссплатформенное ПО |
Первый выпуск | 2002 |
Аппаратная платформа | Java Virtual Machine |
Последняя версия | 6.13.0 (23 июня 2020 года) |
Читаемые форматы файлов | JasperReports JRXML report definition[d] и JasperReports Print[d] |
Создаваемые форматы файлов | JasperReports Print[d] |
Лицензия | GNU Lesser General Public License |
Сайт | community.jaspersoft.com/… |
В случае использования JDBC, основной частью шаблона будет являться SQL-запрос, который указывает какие данные необходимо выбрать из базы данных для генерации отчёта.
В XML-шаблоне отчета (формируется в одном из специализированных графических редакторов, имеет расширение .jrxml) допустимо применение css-стилей и выражений для проверки или вычисления результата (JS, groovy).
Возможности
- Поддержка различных источников данных: JDBC, CALS Table Models, XML, CSV, JavaBeans, EJBQL, Hibernate, а также возможность использования собственного источника данных на основе интерфейса JRDataSource
- Экспорт в различные форматы данных: PDF, HTML, XLS, RTF, ODT, CSV, XML, XHTML, DOCX, XLSX.
- Использование так называемых скриплетов (scriptlets) на Java, которые могут быть вызваны до или после определённых этапов генерации отчётов, таких как Отчёт (Report), Страница (Page), Колонка (Column) и Группа (Group)
- Использование динамических языков JavaScript и Groovy при реализации логики отчета.
- Реализация диаграмм (charts) на основе библиотеки JFreeChart.
- Реализация подотчётов (subreports) с неограниченной глубиной вложенности.
- Реализация кросстаблиц (crosstabs).
- Группировка данных по требуемому полю
JRXML-шаблон
Дизайн JasperReports описывается в специальном XML-файле шаблона, который называется JRXML. Данный шаблон можно создать в ручном режиме (текстовый редактор) или используя различные графические дизайнеры для JasperReports.
Простейший пример шаблона:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="ReportName">
<style name="Arial_Normal" isDefault="true" fontName="Arial"
fontSize="12" pdfFontName="c:\tahoma.ttf" pdfEncoding="Cp1251"
isPdfEmbedded="false" />
<field name="name" class="java.lang.String" />
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="50" height="20" />
<textFieldExpression class="java.lang.String">
<![CDATA[$F{name}]]>
</textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
Тег jasperReport
указывает на начало отчета. Для того чтобы использовать поля, сначала их необходимо описать, например, <field name="name" class="java.lang.String" />
. В описание входит имя поля name
и его java-class class
. После описания поля к нему можно обращаться следующим образом: $F{name}
. Директива $F{…}
указывает на использование именно поля. Также возможно применение переменных $V{…}
и параметров $P{…}
.
Примечания
Ссылки
Графические дизайнеры для JasperReports
- iReport — графический редактор отчётов для работы в среде NetBeans IDE; создан той же организацией, которая создала JasperReports; поставляется также в виде отдельного приложения
- Jaspersoft Studio — является портом iReport под Eclipse; создан той же организацией, которая создала JasperReports
- DynamicReports — Open source Java API reporting library based on JasperReports
- JasperAssistant — графический редактор отчётов для JasperReports, работающий в среде Eclipse; коммерческая лицензия
- Plazma Report Designer
- JasperWave Report Designer — дизайнер шаблонов для JasperReports, построенный на Eclipse платформе (поставляется как в виде набора плагинов для Eclipse IDE, так и в виде отдельного приложения).