2

japserreport を使用して、データをクエリから CSV (;分離) にエクスポートしています。実行するクエリが事前にわからないため、レポートは動的に作成されます。

「空の」jrxml ファイルreportFileName(セクションがなく、データソースのみの空) から始めます。

    final JasperDesign jasperDesign = JRXmlLoader.load(reportFileName);

JRDesignField私が持っているフィールドに従って動的に追加します。

    final JRDesignField field = new JRDesignField();
    field.setName(value);
    field.setValueClass(java.lang.String.class);
    jasperDesign.addField(field);

タイトルと詳細バンドがあります:

    final JRDesignBand titleBand = new JRDesignBand();
    titleBand.setHeight(20);
    final JRDesignBand detailBand = new JRDesignBand();
    detailBand.setHeight(20);

静的テキストを追加する:

    final JRDesignStaticText staticText = new JRDesignStaticText();
    staticText.setText(label);
    staticText.setX(x);
    staticText.setWidth(100);
    staticText.setHeight(20);
    titleBand.addElement(staticText);

およびフィールド:

    final JRDesignTextField textField = new JRDesignTextField();
    textField.setX(x);
    textField.setWidth(100);
    textField.setHeight(20);
    final JRDesignExpression expression = new JRDesignExpression();
    expression.setValueClass(java.lang.String.class);
    expression.setText("$F{" + value + "}");
    textField.setExpression(expression);
    detailBand.addElement(textField);

次に、レポートを CSV 形式にエクスポートします。

    final JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
    JRAbstractExporter exporter = new JRCsvExporter();
    exporter.setParameter(JRCsvExporterParameter.FIELD_DELIMITER, ";");
    exporter.setParameter(JRExporterParameter.PROGRESS_MONITOR, progressMonitor);
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, output);
    exporter.exportReport();

これで、エクスポートが正常に機能し、生成されCSVたファイルが正しい列と値で表示されます。

私の問題は次のとおりです。

  • モードでjasperreport を実行すると、大量TRACEのテキストの幅と高さが計算されることがわかります。これはあらゆる種類のエクスポートで問題ありませんが、CVS ファイル (フラット ファイル) では不要です。これらすべての計算を行わないようにジャスパーに指示するにはどうすればよいですか? (私はを使用しJRSwapFileVirtualizer、スワップファイルは現在 1GB を超えており、300k レコードをカウントしています)

私はjasperreport 4.5.1を使用しています

4

0 に答える 0