Компоненты JasperReport - PullRequest
       20

Компоненты JasperReport

1 голос
/ 08 ноября 2011

Новичок в JasperReports и пытается либо: (a) manually write a JRXML, либо (b) manually program a JasperDesign myself (not using a template).Насколько я понимаю, и объект XML, и объект Java представляют одну и ту же концепцию: пустую «оболочку» отчета без каких-либо данных.

Я пытаюсь выяснить, какие компоненты JR подойдут для моегопотребности, и ссылка , семплов , а также многие онлайн-поиски не вернули ничего ясного.Большая часть документации по JR кажется, по крайней мере, новичку, написанной с точки зрения «предполагаемого знания».

В чем разница и подходящее использование следующих «компонентов» (не совсем уверен, как еще их назвать):

  • Text
  • TextField
  • TextElement
  • StaticText

Этот пример изображения здесь показывает, что большинство этих элементов используются, по-видимому, невольно в неочевидном формате.

Корень моего вопроса в том, что я хочу отобразить двавиды текстовой информации;одну я называю «полями» (не путать с полями JR), а другую я называю «текстовыми блоками», состоящими из заголовка и тела.Я хотел бы, чтобы эти поля / текстовые блоки отображались следующим образом:

"Поле":

Name:          John Smith
Age:           42
Summary:       This is an example of a field

И "текстовый блок":

Name:
John Smith

Age:
42

Summary:
This is an example of a text block. "Summary:" is the head, and this is the body.

Та же информация,просто представлен по-другому.Я считаю, что один / несколько из перечисленных выше компонентов JR - это то, что мне нужно использовать, но я не могу найти какую-либо документацию, которая подтверждает / отвергает это.

У кого-нибудь есть идеи по этому поводу?Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Вы правы в том, что объекты .jrxml и JasperDesign являются аналогами и представляют собой пустой дизайн отчета.Затем этот дизайн может быть скомпилирован в файл .jasper или JasperReport, который затем заполняется данными для создания фактического отчета.

Из четырех перечисленных вами "компонентов" только TextFieldи StaticText действительно компоненты отчета.Другие просто хранят свойства родительского элемента.

  • StaticText содержит текст, который никогда не изменяется.Это задано в дизайне и все.
  • A TextField имеет выражение, которое выполняется при заполнении отчета.Это те элементы, которые вы хотите поместить в свой отчет.
  • Text - это тег, который содержит фактическое текстовое содержимое элемента StaticText.Это единственное место, где оно будет отображаться.
  • TextElement объявляет свойства, относящиеся к тому, как отчет должен отображать текст.Каждый TextField или StaticText может включать этот тег.Свойства включают выравнивание текста, вращение, шрифт, размер шрифта и т. Д.

Для решения вашей проблемы вам потребуется использовать StaticText компонентов для имени, возраста и сводных меток, поскольку они всегдабыть таким же;и TextField компонентов для фактических данных отчета.

Как и предлагали другие, я бы порекомендовал iReport.Я сделал бы большую часть дизайна, используя его, а затем вносил и вносил изменения в JRXML вручную (создаваемый xml немного раздутый).Дизайнер скроет от вас Text и TextElement и будет выглядеть так, как будто свойства устанавливаются для самих текстовых компонентов.Это не проблема, но если вы собираетесь изменить JRXML вручную, вы должны знать об этом, чтобы не добавлять атрибуты к неправильным тегам.Просмотр вывода iReport также является хорошим способом изучения правильного JRXML, поскольку сообщения об ошибках, которые вы получаете для неправильного файла .jrxml, не всегда полезны.

Надеюсь, это поможет!

0 голосов
/ 09 ноября 2011

Если вы не хотите использовать iReport, вы можете попытаться построить отчеты динамически с помощью DynamicJasper Java API или JasperReports Java API.

Мой советвам: не пытайтесь изобретать велосипед.Попробуйте использовать iReport конструктор, это действительно полезный инструмент для создания как простых, так и сложных отчетов.Использование iReport всего лишь в одном: приложение JasperServer (готовое к использованию веб-приложение для развертывания, создания отчетов и экспорта данных в различные форматы) работает с шаблонами jrxml.

iReport Ultimate Guide и JasperReports Ultimate Guide - очень ценные книги.Вы можете найти некоторые руководства здесь .

Это фрагмент шаблона jrxml, относящийся к вашему вопросу (я надеюсь).Это было написано с iReport.

<detail>
    <band height="60" splitType="Stretch">
        <staticText>
            <reportElement x="0" y="0" width="63" height="20"/>
            <box leftPadding="10">
                <topPen lineWidth="1.0"/>
                <leftPen lineWidth="1.0"/>
            </box>
            <textElement/>
            <text><![CDATA[Name:]]></text>
        </staticText>
        <staticText>
            <reportElement x="0" y="20" width="63" height="20"/>
            <box leftPadding="10">
                <leftPen lineWidth="1.0"/>
            </box>
            <textElement/>
            <text><![CDATA[Age:]]></text>
        </staticText>
        <staticText>
            <reportElement x="0" y="40" width="63" height="20"/>
            <box leftPadding="10">
                <leftPen lineWidth="1.0"/>
                <bottomPen lineWidth="1.0"/>
            </box>
            <textElement/>
            <text><![CDATA[Summary:]]></text>
        </staticText>
        <textField>
            <reportElement x="63" y="0" width="290" height="20"/>
            <box leftPadding="10">
                <topPen lineWidth="1.0"/>
                <rightPen lineWidth="1.0"/>
            </box>
            <textElement/>
            <textFieldExpression><![CDATA[$F{Name}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="63" y="20" width="290" height="20"/>
            <box leftPadding="10">
                <pen lineWidth="1.0"/>
                <topPen lineWidth="0.0"/>
                <leftPen lineWidth="0.0"/>
                <bottomPen lineWidth="0.0"/>
                <rightPen lineWidth="1.0"/>
            </box>
            <textElement/>
            <textFieldExpression><![CDATA[$F{Age}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="63" y="40" width="290" height="20"/>
            <box leftPadding="10">
                <bottomPen lineWidth="1.0"/>
                <rightPen lineWidth="1.0"/>
            </box>
            <textElement/>
            <textFieldExpression><![CDATA[$F{Summary}]]></textFieldExpression>
        </textField>
    </band>
</detail>

Результат будет: enter image description here

Это займет у меня всего 5 минут.

...