JasperReports

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
JasperReports
Тип Java-библиотека
Разработчик Jaspersoft
Операционная система Кроссплатформенное ПО
Последняя версия 6.19.0 (22 февраля 2022 года)
Лицензия GNU Lesser General Public License
Сайт community.jaspersoft.com/…

JasperReports — это Java-библиотека для создания отчётов. На основе XML-шаблонов отчётов генерируются готовые для печати документы, консолидирующие данные из различных источников (JDBC, JavaBean, XML, CSV, XLS). Отчёты могут выводиться на экран, принтер, либо в форматы PDF, RTF, HTML, XLS, CSV и XML.

В случае использования 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, так и в виде отдельного приложения).