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を使用しています