gpt4 book ai didi

java - 贾斯珀 : Compiling same jrxml file into multiple output formats

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:34 25 4
gpt4 key购买 nike

我正在做一个具有以下要求的 POC:

我的数据库中有两个表 A 和 B,它们具有相同的列和列类型。

我正在运行以下查询来获取两个表之间的差异。相同的键,不同的列或行存在于一个中但不存在于另一个中:

 SELECT MIN(TableName) as TableName, ID, COL1, COL2, COL3 ...
FROM
(
SELECT 'Table A' as TableName, A.ID, A.COL1, A.COL2, A.COL3, ...
FROM A
UNION ALL
SELECT 'Table B' as TableName, B.ID, B.COL1, B.COl2, B.COL3, ...
FROM B
) as tmp
GROUP BY ID, COL1, COL2, COL3 ...
HAVING COUNT(*) = 1
ORDER BY ID

一旦我得到Java集合中的差异行,我想将它们输出为报告。

但是,要求是输出格式应该是可配置的。例如如果要求生成PDF,则输出应该是PDF。如果要求是XLS,则输出应该是XLS。

现在,我正在探索生成单个 JRXML 文件并将相同的 JRXML 编译为 PDF 或 XLS 的可能性。

这可能吗?谁能给我举一个例子,其中相同的 JRXML 被编译成多种输出格式。

感谢您的阅读!

最佳答案

是的,这是可能的。您必须编写 jrxml 并编译成 jasper 文件。然后,当您拥有 JasperPrint 时,您可以要求构建 PDF 文件 (JRPdfExporter):

public ByteArrayOutputStream fillPDF(JasperPrint jasperPrint) throws Exception{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM,baos);
exporter.exportReport();
return baos;
}

或 XLS 文件 (JRXlsExporter):

public ByteArrayOutputStream fillXLS(JasperPrint jasperPrint) throws Exception{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JRXlsExporter exporterXls = new JRXlsExporter();
exporterXls.setParameter( JRExporterParameter.JASPER_PRINT, jasperPrint );
exporterXls.setParameter( JRExporterParameter.OUTPUT_STREAM, baos);
exporterXls.exportReport();
exporterXlsbaos;
}

注意:简单来说,我已经重复了代码,但是您可以编写一个方法和一个带有报告类型的参数。此外,您还可以正确处理异常。

关于java - 贾斯珀 : Compiling same jrxml file into multiple output formats,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22660173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com