【问题标题】:JR report doesn't show dataJR报告不显示数据
【发布时间】:2012-10-09 15:18:24
【问题描述】:

我编写了这段代码来使用 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
  • commons-digester-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>

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

【问题讨论】:

    标签: java jasper-reports


    【解决方案1】:

    要解决这个问题,你应该:

    1. 检查您的数据源,它可以为空;
    2. 将带有字段表达式 (&lt;textFieldExpression&gt;&lt;![CDATA[$F{field}]]&gt;&lt;/textFieldExpression&gt;) 的 textFields 元素添加到 Detail 带以在报告中显示记录。

    无论如何,您的参数 Name 应该显示在 Title 带(在生成的报告中)。您甚至可以通过 JREmptyDataSource 来检查这一点。


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

    1。使用 Detail 波段

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

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

    2。使用 Crosstab 组件

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

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

    3。使用 List 组件

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

    样本:看Using the Built-in List Component sample

    4。使用 Table 组件

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

    样本:看Using the Built-in Table Component sample

    4。使用子报表组件

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

    样本:看Subreports sample


    详情可在JasperReports Ultimate Guide阅读

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多