JR报告没有显示数据

时间:2012-10-08 09:49:29

标签: java jasper-reports

我已编写此代码以使用 iReport 4.7.1 显示简单报告。

  private void printReport() {
    try {
        JRTableModelDataSource dataSource = new JRTableModelDataSource(
                new JTable().getModel());

        String reportSource = "C:\\Reports\\report1.jrxml";
        Map<String, Object> params = new HashMap<String, Object>();

        params.put("Name", "SriLanka");

        JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
        JasperViewer.viewReport(jasperPrint, false);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

以下是我的图书馆:

  • 公地BeanUtils的-1.8.0.jar
  • 公地集合-2.1.1.jar
  • 公地消化器-2.1.jar
  • 共享记录-1.1.1.jar
  • jasperrreports-4.7.1.jar
  • JasperReports的小程序-4.7.1.jar
  • 的JasperReports-javaflow-4.7.1.jar
  • Groovy的全1.7.5.jar

NetBeans 输出显示此警告

  

Oct 08,2012 2:57:31 PM net.sf.jasperreports.engine.component.ComponentsEnvironment findBundles   警告:找到名称空间为http://jasperreports.sourceforge.net/jasperreports/components

的两个组件

这是 .jrxml 文件:

<?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="report1" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="BlankPage" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="5174594e-de3c-4b09-932b-c6665bf6a34b">
    <parameter name="Name" class="java.lang.String" isForPrompting="false"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch">
            <textField>
                <reportElement uuid="fd02a8bc-548b-41c1-aed5-2a7c2e257704" x="210" y="23" width="157" height="36"/>
                <textElement>
                    <font size="18"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{Name}]]></textFieldExpression>
            </textField>
        </band>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="125" splitType="Stretch"/>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

报告打开但不显示任何文字。

1 个答案:

答案 0 :(得分:1)

要解决此问题,您应该:

  1. 检查您的数据源,它可以为空;
  2. 将带有字段表达式( <textFieldExpression><![CDATA[$F{field}]]></textFieldExpression> )的 textFields 元素添加到 Detail 频段,以在报告中显示记录。
  3. 无论如何,您的参数 名称 应显示在标题频段中(在生成的报告中)。您甚至可以传递 JREmptyDataSource 来检查此内容。


    要显示数据,您可以选择以下方式之一:

    1。使用 Detail band

    用于显示存储在数据源的记录中的数据的经典“老派”方法。 JR 引擎遍历数据源以呈现此部分。借助 textField 元素,我们可以显示字段值。

    示例:查看来自 JR distribution package$jasperreports$\demo\samples\jasper示例。

    2。使用交叉表组件

    Crosstab 组件,用于将数据汇总到具有两个维度的网格中。

    样本:查看$jasperreports$\demo\samples\crosstabs样本。

    3。使用列表组件

    List 组件迭代其记录集(借助 subDataset 属性定义)。

    示例:查看Using the Built-in List Component sample

    4。使用组件

    用于显示具有表格结构的数据。由于 List 组件有自己的 subDataset

    示例:查看Using the Built-in Table Component sample

    4。使用子报告组件

    子报告用于构建复杂的报告,例如汇编不同的报告。该组件通常使用子查询运行。

    示例:查看Subreports sample


    您可以在JasperReports Ultimate Guide

    中阅读详细信息