Создание диаграмм

Раньше людям приходилось полагаться на скриптлеты для сбора данных диаграммы и визуализации диаграммы с использованием элемента изображения в шаблоне отчета. JasperReports упрощает задачу, поскольку имеет встроенную поддержку диаграмм с использованием нового компонента диаграммы.

Используя новый компонент диаграммы, пользователю необходимо применить только визуальные настройки и определить выражения, которые помогут построить набор данных диаграммы. JasperReports использует JFreeChart в качестве базовой библиотеки диаграмм. При настройке нового компонента диаграммы задействованы следующие три компонента:

  • Компонент общей диаграммы.

  • Набор данных диаграммы (который группирует настройки, связанные с данными диаграммы).

  • График диаграммы (который группирует визуальные настройки, связанные со способом отображения элементов диаграммы).

В настоящее время JasperReports поддерживает следующие типы диаграмм: круговая диаграмма, круговая диаграмма 3D, столбик, столбец 3D, столбец XY, столбик с накоплением, столбец с накоплением 3D, линия, линия XY, область, область XY, область с накоплением, разброс, пузырь, временной ряд, высокий -Low-Open-Close, Candlestick, Multi Axis, Meter, Thermometer и Gantt.

Свойства диаграммы

Диаграммы являются обычными элементами отчета, поэтому они имеют общие свойства со всеми другими элементами отчета. Существует элемент JRXML с именем <chart>, используется для создания всех типов диаграмм. Этот элемент группирует специальные настройки для диаграмм, которые применяются ко всем типам диаграмм.

Подэлементы диаграммы

Подэлементы элемента <chart>:

  • <reportElement> - Это отображаемые объекты, такие как статический текст, текстовые поля, изображения, линии и прямоугольники, которые вы помещаете в разделы шаблона отчета.

  • <Box> - Этот элемент используется для окружения диаграмм рамкой, настраиваемой с каждой стороны.

  • <chartTitle>- Этот элемент используется для размещения заголовка диаграммы. Позиция атрибут определяет название позиции диаграммы в отчете. Этот элемент имеет атрибуты -Position(Значения могут быть Top , Bottom , Left , Right . Значение для глухих - Top ),color. <chartTitle> имеет font и titleExpression в качестве подэлементов.

  • <chartSubtitle>- Этот элемент используется для размещения подзаголовка диаграммы. Этот элемент имеет атрибут -color. <chartSubtitle> имеет font и subtitleExpression в качестве подэлементов.

  • <chartLegend>- С помощью этого элемента элемент может управлять свойствами, связанными со шрифтом, а также цветом текста и цветом фона легенды диаграммы. У этого элемента есть атрибуты -textColor и backgroundColor.

  • <anchorNameExpression> - Этот элемент создает цель для якоря.

  • <hyperlinkReferenceExpression> - Этот элемент содержит выражение отчета, указывающее имя внешнего ресурса (обычно URL).

  • <hyperlinkAnchorExpression> - Гиперссылка указывает на привязку во внешнем ресурсе.

  • <hyperlinkPageExpression> - Гиперссылка указывает на страницу в текущем отчете.

  • <hyperlinkTooltipExpression>- Этот элемент управляет всплывающей подсказкой гиперссылки. Тип выражения должен быть java.lang.String .

  • <hyperlinkParameter> - Этот элемент, если он присутствует, генерирует последнюю гиперссылку в зависимости от значений параметров.

Атрибуты диаграммы

Атрибуты в элементе <chart>, доступные для всех типов диаграмм:

  • isShowLegend- Этот атрибут используется для определения, будет ли в отчете отображаться легенда диаграммы. Значения могут быть истинными или ложными . Значение по умолчанию - истина .

  • evaluationTime- Определяет, когда будет оцениваться выражение диаграммы. Значения могут быть « Сейчас» , « Отчет» , « Страница» , « Столбец» , « Группа» , « Группа» . Значение по умолчанию - Сейчас .

  • evaluationGroup- Этот атрибут определяет имя группы, которая будет использоваться для оценки выражений диаграммы. Значение этого атрибута должно совпадать с названием группы, которую мы хотели бы использовать в качестве группы оценки диаграммы.

  • hyperlinkType- Этот атрибут может содержать любое текстовое значение. Значение по умолчанию - Нет . Это означает, что ни текстовые поля, ни изображения не представляют гиперссылки, даже если присутствуют специальные выражения гиперссылок.

  • hyperlinkTarget- Этот атрибут помогает настроить поведение указанной ссылки при нажатии на нее в средстве просмотра. Значения могут быть собственными или пустыми . Значение по умолчанию - Self .

  • bookmarkLevel- Если для этого атрибута задано положительное целое число, создаются закладки в отчетах, экспортированных в PDF. Значение по умолчанию - 0 .

  • customizerClass- Это имя класса (необязательно), который можно использовать для настройки диаграммы. Значением этого элемента должна быть строка, содержащая имя класса настройщика.

Настройка диаграммы

Как упоминалось выше, JasperReports использует JFreeChart в качестве базовой библиотеки диаграмм. JFreeChart содержит функции, которые напрямую не поддерживаются JasperReports. Мы можем воспользоваться этими функциями, предоставив класс настройщика через атрибут customizerClass в элементе <chart>. Класс настройщика - это не что иное, как реализация интерфейса net.sf.jasperreports.engine.JRChartCustomizer . Самый простой способ реализовать этот интерфейс - расширить класс net.sf.jasperreports.engine.JRAbstractChartCustomizer и, таким образом, получить доступ к параметрам, полям и переменным для более гибкой настройки диаграммы на основе данных отчета.

Наборы данных диаграмм

Одно из общих свойств для всех типов диаграмм - <dataset> элемент. Наборы данных диаграммы помогают отображать данные отчета и извлекать данные диаграммы во время выполнения. Каждый тип диаграммы содержит различные подэлементы для определения выражений диаграммы. Эти выражения определяют данные, используемые для создания диаграммы. Все эти подэлементы содержат элемент <dataset>, который определяет, когда выражения диаграммы оцениваются и сбрасываются.

В JasperReports доступно несколько типов наборов данных диаграмм, потому что каждый тип диаграммы работает с определенными наборами данных: круговая диаграмма, категория, XY, временные ряды, период времени, XYZ и максимум-минимум. Каждый из этих типов наборов данных реализует интерфейс net.sf.jasperreports.engine.JRChartDataset, который определяет наборы данных диаграммы. Все наборы данных диаграммы инициализируются и увеличиваются одинаково; однако они различаются только типом данных или рядов данных, которые они отображают.

Свойства набора данных

В приведенной ниже таблице приведены атрибуты элемента <dataset> -

Атрибут Описание Значения
resetType Этот атрибут определяет, когда следует сбросить значение выражения диаграммы. Нет, Отчет, Страница, Столбец, Группа. Значение по умолчаниюReport.
resetGroup Этот атрибут определяет имя группы, в которой значение выражения диаграммы сбрасывается. Значение этого атрибута должно совпадать с именем любой группы, объявленной в шаблоне отчета JRXML.
incrementType Этот атрибут определяет, когда следует пересчитывать значение выражения диаграммы. Нет, Отчет, Страница, Столбец, Группа. Значение по умолчанию"None".
incrementGroup Этот атрибут определяет имя группы, в которой пересчитывается выражение диаграммы. Значение этого атрибута должно соответствовать имени группы, объявленной в шаблоне отчета JRXML.

В следующей таблице приведены подэлементы элемента <dataset> -

Подэлемент Описание
<incrementWhenExpression> Способ увеличения набора данных диаграммы можно настроить, отфильтровав нежелательные данные с помощью этого подэлемента.
<datasetRun> Он содержит информацию, необходимую для создания поднабора отчета.

Типы наборов данных

Конкретные типы наборов данных объясняются ниже -

Набор данных пирога

Набор данных пирога характеризуется следующими выражениями -

  • <keyExpression> - представляет категории, которые будут составлять срезы круговой диаграммы. Это выражение может возвращать любой объект java.lang.Comparable.

  • <valueExpression> - производит значения, соответствующие каждой категории / ключу в наборе данных. Значения всегда являются объектами java.lang.Number.

  • <labelExpression> - если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого фрагмента круговой диаграммы. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для круговой диаграммы.

  • <sectionHyperlink> - устанавливает гиперссылки, связанные с секциями круговой диаграммы.

Категория Набор данных

Набор данных категории характеризуется элементом <categorySeries>, который содержит:

  • <seriesExpression> - указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.

  • <categoryExpression> - возвращает имя категории для каждого значения внутри ряда, указанного выражением ряда. Категории - это объекты java.lang.Comparable.

  • <valueExpression> - производит значения, соответствующие каждой категории в наборе данных. Значения всегда являются объектами java.lang.Number.

  • <labelExpression> - если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента диаграммы. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.

  • <itemHyperlink> - устанавливает гиперссылки, связанные с элементами диаграммы.

Набор данных XY

Набор данных XY характеризуется элементом <xySeries>, который содержит:

  • <seriesExpression> - указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.

  • <xValueExpression> - возвращает значение java.lang.Number, представляющее значение X из пары (x, y), которая будет добавлена ​​к текущему ряду данных.

  • <yValueExpression> - возвращает значение java.lang.Number, представляющее значение Y из пары (x, y), которая будет добавлена ​​к текущему ряду данных.

  • <labelExpression> - если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента диаграммы. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.

  • <itemHyperlink> - устанавливает гиперссылки, связанные с элементами диаграммы.

Набор данных XYZ

Набор данных XYZ характеризуется элементом <xyzSeries>, который содержит:

  • <seriesExpression> - указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.

  • <xValueExpression> - возвращает значение java.lang.Number, представляющее значение X из элемента (x, y, z), который будет добавлен в текущий ряд данных.

  • <yValueExpression> - возвращает значение java.lang.Number, представляющее значение Y из элемента (x, y, z), который будет добавлен в текущий ряд данных.

  • <zValueExpression> - возвращает значение java.lang.Number, представляющее значение Z из элемента (x, y, z), которое будет добавлено к текущему ряду данных.

  • <labelExpression> - если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента диаграммы. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.

  • <itemHyperlink> - устанавливает гиперссылки, связанные с элементами диаграммы.

Набор данных временных рядов

Набор данных временных рядов характеризуется атрибутом timePeriod и элементом <timeSeries>. Атрибут timePeriod указывает тип ряда данных внутри набора данных. Временные ряды могут содержать числовые значения, связанные с днями, месяцами, годами или другими предопределенными периодами времени. Возможные значения: Год, Квартал, Месяц, Неделя, День - это значение по умолчанию, Час, Минута, Секунда, Миллисекунда.

Элемент <timeSeries> содержит -

  • <seriesExpression> - указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.

  • <timePeriodExpression> - возвращает значение java.util.Date, из которого движок будет извлекать соответствующий период времени в зависимости от значения, установленного для атрибута timePeriod, упомянутого выше.

  • <valueExpression> - возвращает значение java.lang.Number, которое нужно связать с соответствующим значением периода времени при увеличении текущего ряда набора данных.

  • <labelExpression> - если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента диаграммы. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.

  • <itemHyperlink> - устанавливает гиперссылки, связанные с элементами диаграммы.

Набор данных периода времени

Набор данных периода времени характеризуется элементом <timePeriodSeries>, который содержит -

  • <seriesExpression> - указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.

  • <startDateExpression> - указывает начало интервала дат, с которым будет связано числовое значение при добавлении к ряду временного периода.

  • <endDateExpression> - указывает конец интервала дат, с которым будет связано числовое значение при добавлении к ряду временного периода.

  • <valueExpression> - возвращает значение java.lang.Number для связи с текущим интервалом дат, заданным выражениями даты начала и даты окончания.

  • <labelExpression> - если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента диаграммы. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.

  • <itemHyperlink> - устанавливает гиперссылки, связанные с элементами диаграммы.

Высокий низкий набор данных

Набор данных с высоким и низким уровнем характеризуется следующими выражениями -

  • <seriesExpression> - в настоящее время поддерживается только одна серия внутри графика High-Low или Candlestick. Однако эта отдельная серия должна идентифицироваться значением java.lang.Comparable, возвращаемым этим выражением, и ее также следует использовать в качестве имени серии в легенде диаграммы.

  • <dateExpression> - возвращает дату, к которой относится текущий элемент (максимум, минимум, открытие, закрытие, объем).

  • <highExpression> - возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого в серию, когда набор данных увеличивается.

  • <lowExpression> - возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого к серии при увеличении набора данных.

  • <openExpression> - возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого в серию при увеличении набора данных.

  • <closeExpression> - возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого в серию при увеличении набора данных.

  • <volumeExpression> - числовое выражение, которое возвращает значение объема, используемое для текущего элемента данных. Используется только для графиков свечей.

  • <itemHyperlink> - устанавливает гиперссылки, связанные с элементами диаграммы.

Набор данных значения

Это специальная реализация набора данных диаграммы, которая содержит одно значение и используется для визуализации диаграмм измерителя и термометра. Значение собирается с помощью выражения <valueExpression>.

Графики

Другой распространенный элемент JRXML для всех типов диаграмм - это <plot> элемент. Это позволяет нам определять некоторые характеристики диаграммы, такие как ориентация и цвет фона. Графики различаются в зависимости от типа диаграммы.

Атрибут участка

В приведенной ниже таблице приведены атрибуты элемента <plot> -

Атрибут Описание Значения
цвет фона Этот атрибут определяет цвет фона диаграммы. Любое шестизначное шестнадцатеричное значение является допустимым значением для этого атрибута. Шестнадцатеричному значению должен предшествовать символ #.
ориентация Этот атрибут определяет ориентацию диаграммы. По горизонтали, вертикали Значение по умолчанию - «Вертикально».
фонАльфа Этот атрибут определяет прозрачность цвета фона диаграммы. Допустимые значения этого атрибута включают любое десятичное число от 0 до 1 включительно. Чем выше число, тем менее прозрачным будет фон. Значение по умолчанию - «1».
передний планАльфа Этот атрибут определяет прозрачность цветов переднего плана диаграммы. Допустимые значения этого атрибута включают любое десятичное число от 0 до 1 включительно. Чем выше число, тем менее прозрачным будет фон. Значение по умолчанию - «1».
labelRotation Этот атрибут позволяет вращать текстовые метки по оси x по часовой стрелке или против часовой стрелки. Этот атрибут применяется только к диаграммам, для которых ось x не является числовой или не отображает даты. Значение по умолчанию - «0,0».

Элемент <plot> имеет подэлемент <seriesColor> с атрибутами: seriesOrder и color . Этот элемент настраивает цвета для серий и их положение в цветовой последовательности.

Особые настройки для графиков

  • piePlot - Не имеет особых настроек

  • pie3DPlot- Содержит атрибут depthFactor , числовое значение в диапазоне от 0 до 1, представляющее глубину круговой диаграммы в процентах от высоты области графика.

  • barPlot - Можно отображать или скрывать метки галочки, метки или метки элементов, а также предоставляет настройки для обеих осей.

  • bar3DPlot - Предоставляет те же настройки, что и barPlot, и создает трехмерный эффект с использованием атрибутов xOffset и yOffset.

  • linePlot - Можно показать или скрыть линии, соединяющие точки элементов, можно показать или скрыть формы, связанные с точками элементов, и предоставить настройки для обеих осей.

  • scatterPlot - Подобно linePlot, он может отображать или скрывать линии, соединяющие точки элементов, может отображать или скрывать формы, связанные с точками элементов, и предоставляет настройки для обеих осей.

  • areaPlot - Предоставляет настройки для обеих осей.

  • bubblePlot - Можно установить размеры пузыря, установив атрибут scaleType и предоставив настройки для обеих осей.

  • timeSeriesPlot - Можно показать или скрыть линии, соединяющие точки элементов, можно показать или скрыть формы, связанные с точками элементов, и предоставить настройки для обеих осей.

  • highLowPlot - Можно показать или скрыть открытые отметки, показать или скрыть закрытые отметки, а также предоставить настройки для обеих осей.

  • candlestickPlot - Можно показать или скрыть объем, и предоставляет настройки для обеих осей.

  • meterPlot - Содержит специальные настройки для формы циферблата, угла шкалы, единиц измерения, интервала деления, цвета циферблата, цвета стрелки, цвета отметки, шрифта отображения значений, цвета и шаблона формата, диапазона данных и интервалов счетчика.

  • thermometerPlot - Содержит определенные настройки для местоположения значения, цвета ртути, отображения / скрытия строк значений, шрифта отображения значения, цвета и шаблона формата, диапазона данных, низкого диапазона, среднего диапазона и высокого диапазона.

  • multiAxisChart - Содержит определенные настройки для оси, включенной в график.

Типы графиков

JasperReports предлагает встроенную поддержку нескольких типов диаграмм. Они перечислены ниже -

  • pieChart - Комбинация набора данных Pie и графика Pie.

  • pie3DChart - Группирует набор данных Pie и 3D-график Pie.

  • barChart - Базовая комбинация набора данных категории и гистограммы.

  • bar3DChart - Обертывает набор данных категории и график 3D Bar.

  • xyBarChart - Поддерживает наборы данных периода времени, наборы данных временных рядов и наборы данных XY и использует гистограмму для визуализации оси и элементов.

  • stackedBarChart - Использует данные из набора данных категории и отображает его содержимое с помощью гистограммы.

  • stackedBar3DChart - Использует данные из набора данных категории и отображает его содержимое с помощью гистограммы 3D.

  • lineChart - Группирует набор данных категории и линейный график.

  • xyLineChart - Группирует набор данных XY и линейный график.

  • areaChart - Элементы из набора данных категории отображаются с использованием графика площади.

  • stackedAreaChart - Элементы из набора данных категории отображаются с использованием графика площади.

  • xyAreaChart - Использует данные из набора данных XY и отображает их на графике площади.

  • scatterChart - Обертывает набор данных XY диаграммой рассеяния.

  • bubbleChart - Объединяет набор данных XYZ с графиком пузырьков.

  • timeSeriesChart - Группирует набор данных временных рядов и график временных рядов.

  • highLowChart - Комбинация набора данных High-Low и графика High-Low.

  • candlestickChart - Использует данные из набора данных High-Low, но со специальным графиком Candlestick.

  • meterChart - Отображает одно значение из набора данных Value на циферблате с использованием параметров рендеринга из графика Meter.

  • thermometerChart - Отображает отдельное значение в наборе данных Value с использованием параметров визуализации из графика термометра.

  • multiAxisChart - Содержит несколько осей диапазона, все из которых имеют общую ось домена.

пример

Для демонстрации диаграмм напишем новый шаблон отчета (jasper_report_template.jrxml). Здесь мы добавим <barChart> в раздел <pageHeader> и <pieChart> в раздел <summary>. Мы будем отображать в диаграммах оценки, полученные по каждому предмету. Сохраните его в каталогC:\tools\jasperreports-5.0.1\test. Содержимое файла приведено ниже -

<?xml version = "1.0" encoding = "UTF-8"?>

<jasperReport xmlns = "http://jasperreports.sourceforge.net/jasperreports"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://jasperreports.sourceforge.net/jasperreports
   http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
   name = "jasper_report_template" pageWidth = "595" pageHeight = "860"
   columnWidth = "515" leftMargin = "40" rightMargin = "40"
   topMargin = "50" bottomMargin = "50">

   <field name = "subjectName" class = "java.lang.String"/>
   <field name = "marks" class = "java.lang.Integer"/>
   
   <variable name = "countNumber" class = "java.lang.Integer" calculation = "Count">
      <variableExpression>
         <![CDATA[Boolean.TRUE]]>
      </variableExpression>
   </variable>
   
   <background>
      <band splitType = "Stretch"/>
   </background>
   
   <title>
      <band height = "79" splitType = "Stretch"/>
   </title>
   
   <pageHeader>
      <band height = "200">
    
         <barChart>
            <chart evaluationTime = "Report">
               <reportElement x = "0" y = "0" width = "555" height = "200"/>
            
               <chartTitle>
                  <titleExpression>
                     <![CDATA["My First JR Bar Chart"]]>
                  </titleExpression>
               </chartTitle>
            </chart>
      
            <categoryDataset>
               <dataset incrementType = "None"/>
            
               <categorySeries>
                  <seriesExpression>
                     <![CDATA[$F{subjectName}]]>
                  </seriesExpression>
            
                  <categoryExpression>
                     <![CDATA[$F{subjectName}]]>
                  </categoryExpression>
            
                  <valueExpression>
                     <![CDATA[$F{marks}]]>
                  </valueExpression>

               </categorySeries>
            </categoryDataset>
      
            <barPlot isShowTickMarks = "false">
               <plot/>
            </barPlot>
         </barChart>
      
      </band>
   </pageHeader>
   
   <columnHeader>
      <band height = "20" splitType = "Stretch"/>
   </columnHeader>
   
   <detail>
      <band height = "20" splitType = "Stretch"/>
   </detail>
   
   <columnFooter>
      <band height = "20" splitType = "Stretch"/>
   </columnFooter>
   
   <pageFooter>
      <band height = "20" splitType = "Stretch"/>
   </pageFooter>
   
   <summary>
      <band height = "400" splitType = "Stretch">
      
         <pieChart>
            <chart evaluationTime = "Report">
               <reportElement x = "135" y = "0" width = "270" height = "300"/>
            
               <chartTitle>
                  <titleExpression>
                     <![CDATA["My First JR Pie Chart"]]>
                  </titleExpression>
               </chartTitle>
            </chart>
         
            <pieDataset>
               <dataset incrementType = "None"/>
               
               <keyExpression>
                  <![CDATA[$F{subjectName}]]>
               </keyExpression>
            
               <valueExpression>
                  <![CDATA[$F{marks}]]>
               </valueExpression>
            </pieDataset>
            
            <piePlot>
               <plot/>
               <itemLabel/>
            </piePlot>
         </pieChart>
      
      </band>
   </summary>
	
</jasperReport>

Детали вышеуказанного файла приведены ниже -

  • Элемент JRXML, используемый для создания гистограммы, находится </barChart> в <pageHeader>. Он содержит подэлемент </chart>, который содержит подэлемент <reportElement>, определяющий размеры и положение диаграммы.

  • Элемент <dataset> на линейчатой ​​диаграмме должен быть заключен между элементами <categoryDataset> и </categoryDataset> JRXML.

  • <categoryDataset> должен содержать элемент <categorySeries>. Этот элемент определяет, какой элемент данных будут представлять полосы (в данном примере - имена субъектов).

  • <categoryDataset> также должен содержать элемент, который определяет, как данные будут разделены на категории для сравнения. Здесь данные разделены именами субъектов.

  • Элемент <valueExpression> определяет, какое выражение используется для определения значения каждого столбца на диаграмме. Здесь мы используем «метки».

  • Для круговой диаграммы мы использовали элемент <pieChart> в разделе <summary>. Он содержит подэлемент </chart>.

  • Подэлемент содержит выражение отчета, указывающее, что использовать в качестве ключа на диаграмме. Здесь мы использовали subjectName.

  • Подэлемент содержит выражение, используемое для вычисления значения ключа. Здесь мы использовали марки.

Java-коды для заполнения отчетов остались без изменений. Содержимое файлаC:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\JasperReportFill.java приведены ниже -

package com.tutorialspoint;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class JasperReportFill {
   @SuppressWarnings("unchecked")
   public static void main(String[] args) {
      String sourceFileName = 
         "C://tools/jasperreports-5.0.1/test/jasper_report_template.jasper";

      DataBeanList DataBeanList = new DataBeanList();
      ArrayList<DataBean> dataList = DataBeanList.getDataBeanList();

      JRBeanCollectionDataSource beanColDataSource = new 
         JRBeanCollectionDataSource(dataList);

      Map parameters = new HashMap();

      try {
         JasperFillManager.fillReportToFile( sourceFileName,
            parameters, beanColDataSource);
      } catch (JRException e) {
         e.printStackTrace();
      }
   }
}

Поскольку мы будем отображать оценки, полученные по каждому предмету, POJO необходимо изменить. ФайлC:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\DataBean.java содержание приведено ниже -

package com.tutorialspoint;

public class DataBean {
   private String subjectName;
   private Integer marks;

   public String getSubjectName() {
      return subjectName;
   }

   public void setSubjectName(String subjectName) {
      this.subjectName = subjectName;
   }

   public Integer getMarks() {
      return marks;
   }

   public void setMarks(Integer marks) {
      this.marks = marks;
   }

}

Даже содержимое файла C:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\DataBeanList.java необходимо обновить, как указано ниже -

package com.tutorialspoint;

import java.util.ArrayList;

public class DataBeanList {
   public ArrayList<DataBean> getDataBeanList() {
      ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();

      dataBeanList.add(produce("English", 58));
      dataBeanList.add(produce("SocialStudies", 68));
      dataBeanList.add(produce("Maths", 38));
      dataBeanList.add(produce("Hindi", 88));
      dataBeanList.add(produce("Scince", 78));
      
      return dataBeanList;
   }

   /*
    * This method returns a DataBean object, with subjectName ,
    * and marks set in it.
    */
   private DataBean produce(String subjectName, Integer marks) {
      DataBean dataBean = new DataBean();

      dataBean.setSubjectName(subjectName);
      dataBean.setMarks(marks);

      return dataBean;
   }
}

Генерация отчетов

Затем давайте скомпилируем и выполним указанные выше файлы, используя наш обычный процесс сборки ANT. Содержимое файла build.xml (сохраненного в каталоге C: \ tools \ jasperreports-5.0.1 \ test) показано ниже.

Файл импорта - baseBuild.xml взят из главы « Настройка среды» и должен быть помещен в тот же каталог, что и build.xml.

<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "viewFillReport" basedir = ".">
   <import file = "baseBuild.xml" />
   
   <target name = "viewFillReport" depends = "compile,compilereportdesing,run"
      description = "Launches the report viewer to preview the 
      report stored in the .JRprint file.">
      
      <java classname = "net.sf.jasperreports.view.JasperViewer" fork = "true">
         <arg value = "-F${file.name}.JRprint" />
         <classpath refid = "classpath" />
      </java>
   </target>
   
   <target name = "compilereportdesing" description = "Compiles the JXML file and
      produces the .jasper file.">
		
      <taskdef name = "jrc" classname = "net.sf.jasperreports.ant.JRAntCompileTask">
         <classpath refid = "classpath" />
      </taskdef>
      
      <jrc destdir = ".">
         <src>
            <fileset dir = ".">
               <include name = "*.jrxml" />
            </fileset>
         </src>
			
         <classpath refid = "classpath" />
      </jrc>
   </target>

</project>

Затем давайте откроем окно командной строки и перейдем в каталог, где находится build.xml. Наконец, выполните командуant -Dmain-class=com.tutorialspoint.JasperReportFill (viewFullReport является целью по умолчанию) следующим образом:

C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.tutorialspoint.JasperReportFill
Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml

clean-sample:
   [delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint

compile:
   [mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes
   [javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28:
   warning: 'includeantruntime' was not set, defaulting to bu
   [javac] Compiling 3 source files to C:\tools\jasperreports-5.0.1\test\classes

compilereportdesing:
   [jrc] Compiling 1 report design files.
   [jrc] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
   [jrc] log4j:WARN Please initialize the log4j system properly.
   [jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig 
      for more info.
   [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK.

run:
   [echo] Runnin class : com.tutorialspoint.JasperReportFill
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

viewFillReport:
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

BUILD SUCCESSFUL
Total time: 19 minutes 45 seconds

В результате вышеуказанной компиляции открывается окно JasperViewer, как на экране ниже -

Здесь мы видим, что столбчатая диаграмма создается в заголовке страницы, а круговая диаграмма создается в разделах сводки.