繁体   English   中英

JR报告不显示数据

[英]JR report doesn't show data

我已经编写了这段代码,以使用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();
    }
}

这是我的图书馆:

  • commons-beanutils-1.8.0.jar
  • commons-collections-2.1.1.jar
  • 公共沼气池-2.1.jar
  • commons-logging-1.1.1.jar
  • jasperrreports-4.7.1.jar
  • jasperreports-applet-4.7.1.jar
  • jasperreports-javaflow-4.7.1.jar
  • groovy-all-1.7.5.jar

NetBeans输出显示此警告

2012年10月8日下午2:57:31 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. 检查您的数据源,它可以为空;
  2. 将带有字段表达式( <textFieldExpression><![CDATA[$F{field}]]></textFieldExpression> )的textFields元素添加到“ 详细信息”区域,以在报表中显示记录。

无论如何,您的参数名称应显示在标题栏中(在生成的报告中)。 您甚至可以通过JREmptyDataSource进行检查。


为了显示数据,您可以选择以下一种方式:

1.使用明细

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

示例 :从JR 分发包中查看$jasperreports$\\demo\\samples\\jasper示例。

2.使用交叉表组件

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

该示例:查看$jasperreports$\\demo\\samples\\crosstabs示例。

3.使用列表组件

List组件在其记录集(在subDataset属性的帮助下定义)上进行迭代

该示例 :查看使用内置列表组件示例

4.使用表格组件

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

该示例 :查看使用内置表组件示例

4.使用子报表组件

子报表用于构建复杂的报表,例如将不同的报表合二为一。 该组件通常与子查询一起运行。

该示例 :查看Subreports示例


您可以在《 JasperReports Ultimate Guide》中阅读详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM