Создание диаграмм
Раньше людям приходилось полагаться на скриптлеты для сбора данных диаграммы и визуализации диаграммы с использованием элемента изображения в шаблоне отчета. 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, как на экране ниже -
Здесь мы видим, что столбчатая диаграмма создается в заголовке страницы, а круговая диаграмма создается в разделах сводки.