1

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 PM net.sf.jasperreports.engine.component.ComponentsEnvironment findBundles 警告: 名前空間の 2 つのコンポーネントが見つかりました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>

レポートは開きますが、テキストは表示されません。

4

1 に答える 1

1

この問題を解決するには、次のことを行う必要があります。

  1. データソースを確認してください。空である可能性があります。
  2. フィールド式 ( ) を持つtextFields要素を詳細バンドに追加して、レポートにレコードを表示します。<textFieldExpression><![CDATA[$F{field}]]></textFieldExpression>

とにかく、パラメータはタイトルバンド (生成されたレポート) に表示される必要があります。JREmptyDataSourceを渡してこれを確認することもできます。


データを表示するには、次のいずれかの方法を選択できます。

1.ディテールバンドの使い方

これは、データ ソースからレコードに格納されたデータを表示するための、従来の "古い学校" の方法です。JRエンジンは、このセクションをレンダリングするためにデータ ソースを反復処理します。textField要素の助けを借りて、フィールド値を表示できます。

サンプル: JR配布パッケージ$jasperreports$\demo\samples\jasperのサンプルを参照してください。

2. Crosstabコンポーネントの使用

データを 2 つのディメンションを持つグリッドに要約するために使用されるCrosstabコンポーネント。

サンプル: サンプルを見てください$jasperreports$\demo\samples\crosstabs

3.リストコンポーネントの使用

Listコンポーネントは、一連のレコード (subDataset プロパティを使用して定義)反復処理します。

サンプル:組み込みリスト コンポーネントの使用サンプルを参照してください。

4.テーブルコンポーネントの使用

Tableは、表形式のデータを表示するために使用しています。Listコンポーネントには独自のsubDatasetがあります。

サンプル:組み込みのテーブル コンポーネントの使用サンプルを参照してください。

4.サブレポートコンポーネントの使用

サブレポートは、さまざまなレポートを 1つにまとめるなど、複雑なレポートを作成するために使用されます。このコンポーネントは、多くの場合、サブクエリで動作します。

サンプル:サブレポートのサンプルを見てください。


JasperReports Ultimate Guideで詳細を読むことができます

于 2012-10-09T07:18:24.067 に答える