Мне нужен редактор для создания некоторых отчетов, все отчеты имеют заголовок (название компании, адрес, телефон, изображение), который читается из таблицы, называемой компаниями, и содержит подробный пример, например, всех клиентов компании.Как я могу сделать это в iReports?
Вы можете посмотреть это образцы .Дистрибутив JasperReports содержит множество других примеров (в папке % jasperreports% \ demo \ samples ). iReport также содержит несколько образцов в папке % iReport% \ ireport \ samples .
Ваш пример отчета очень прост.
Этапы создания такого отчета могут быть такими:
- Добавление image элемента (с логотипом компании) и нескольких (или одного) staticText элементов (с контактной информацией компании) в полосу Title .
- Добавление запроса (для получения данных из MySQL DB) с полями ()idClient , name , address в вашем образце)
- Добавление staticText элементов с заголовком столбцов в заголовок столбца band - это будет заголовок столбцов для сетки данных
- Добавление textField элементов с полями в Detail band - это будут данные в сетке
Вы должны прочитать Руководство по JasperReports Ultimate .Это отличный учебник.
Пример файла jrxml (разработан в iReport ):
<?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="sample_company" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<queryString>
<![CDATA[SELECT idClient, name, address FROM customers_table]]>
</queryString>
<field name="idClient" class="java.lang.Integer"/>
<field name="name" class="java.lang.String"/>
<field name="address" class="java.lang.String"/>
<title>
<band height="108" splitType="Stretch">
<staticText>
<reportElement x="171" y="53" width="183" height="55"/>
<textElement textAlignment="Center" verticalAlignment="Middle" markup="styled"/>
<text><![CDATA[<style isBold="true" forecolor="blue">ABC COMPANY</style>
Main Avenue and 9th Street
Tel: (593) 4 - 2066765
e-mail: info@abc.com]]></text>
</staticText>
<image>
<reportElement x="245" y="3" width="41" height="50"/>
<imageExpression><![CDATA["abc_logo.png"]]></imageExpression>
</image>
</band>
</title>
<columnHeader>
<band height="20">
<staticText>
<reportElement x="11" y="0" width="160" height="20"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Id Client]]></text>
</staticText>
<staticText>
<reportElement x="171" y="0" width="183" height="20"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Name]]></text>
</staticText>
<staticText>
<reportElement x="354" y="0" width="172" height="20"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Address]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="11" y="0" width="160" height="20"/>
<box leftPadding="10"/>
<textElement/>
<textFieldExpression><![CDATA[$F{idClient}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="354" y="0" width="172" height="20"/>
<box leftPadding="10"/>
<textElement/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="171" y="0" width="183" height="20"/>
<box leftPadding="10"/>
<textElement/>
<textFieldExpression><![CDATA[$F{address}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
Результат будет (отчетэкспортируется в pdf формат):
ОБНОВЛЕНИЕ:
Для заполнения заголовкас информацией о компании вы можете использовать диапазон Group .Вы можете прочитать информацию о группах здесь .
Ваш запрос будет выглядеть следующим образом:
SELECT c.idClient, c.name, c.address, cmp.name AS companyName, cmp.contactInfo, cmp.id AS idCompany FROM customers c, companies cmp WHERE cmp.id=c.idCompany SORT BY cmp.id
Вы также должны добавить поля отчета для данныхиз таблицы companies
(например, companies.name
, companies.contactInfo
, companies.id
):
<field name="companyName" class="java.lang.String"/>
<field name="contactInfo" class="java.lang.String"/>
<field name="idCompany" class="java.lang.String"/>
После этого необходимо добавить группу с помощью idCompany
(уникальный ключ из таблицы companies
).Затем поместите элементы textField с полями (companyName
, contactInfo
) в группу Group .