私のJavaプロジェクトでは、多くのパラメータを含む複雑なSQLクエリを含むJasperReportsレポートがたくさんあります。レポートは、クエリによって返されたデータを含むpdfドキュメントを作成するために使用され、さまざまな方法でグループ化され、フォーマットされます。JasperReportsのクエリ結果をエクスポートする
ここでは、クエリ結果(例:ResultSet、Map、CSVファイルなど)を直接エクスポートする必要もあります。 JasperReportsにクエリのみを実行し、pdfページをレンダリングする代わりに結果を返すようにすることはできますか?
(注:レポートのデザインをcsvファイルに変換しようとするため、レポートのレンダリングにcsv出力形式を選択するのと同じではありません...代わりに、私は「再利用」したいレポート内のクエリは、JRのも活かし、パラメータ管理、等...)
これはレポートからPDF文書を生成するために、私のJavaコードです:JRJdbcQueryExecuter
と呼ばれるクラスがあります私が見た
JasperReport report = (JasperReport) JRLoader.loadObject(inStream);
JasperPrint jasperprint = JasperFillManager.fillReport(report, params, conn);
JRAbstractExporter exporter = new JRPdfExporter();
exporter.exportReport();
ByteArrayOutputStream os = (ByteArrayOutputStream) exporter.getParameter(JRExporterParameter.OUTPUT_STREAM);
byte[] formattedReportBytes = os.toByteArray();
return formattedReportBytes;
内部のJasperReports ... の代わりに直接呼び出すことはできますか0、実行されたSQLクエリのResultSetを取得するには?私は、これは間違っていると感じているハックが、それは可能であるが、マイナス実際にクエリを実行するのJasperReportsを持つことを始めたいと思い
おかげ
なぜこのタスクを解決するためにJasperReports APIを使用しますか? –
私は前に述べたように、長いSQLクエリ(多くのパラメータを含む)を含み、複雑なpdfレンダリング、データのグループ化などを含む多くのレポートを持っています。グループ化、またはレンダリングを行うことができます。レポートからクエリを手動でコピーするのと同じように、すべての$ P {}を実際の値に置き換え、SQLクライアントにペーストして実行し、csvファイルとして抽出します。私はコードでこれを行う自動方法を探していますJRパラメータ管理を利用し、クエリを解析し、実行の準備ができて取得します。 –
そしてこの作品の目的は何ですか?あなたは返されたResultSetで何をしますか?ちょうど面白い... –