Java 以编程方式读取jasper报告

Java 以编程方式读取jasper报告,java,jasper-reports,reporting,Java,Jasper Reports,Reporting,我公司的一些顾问创建了多个jasper报告(使用iReports),这些报告将使用自定义JRDataSource以编程方式填充 问题是,我需要知道报表中存在哪些元素,以便调用相应的Web服务,所以我的问题是:如何以Java编程方式读取报表,以便识别需要填充的每个元素 报告不能全部以编程方式生成,因为它们的布局会不断更改,并且我们不能在每次更改时都更新我们的软件。由于它是XML,您当然可以阅读所有内容并解析信息 由于JasperReports的工作方式正好相反,它通过JRDataSource拉取数

我公司的一些顾问创建了多个jasper报告(使用iReports),这些报告将使用自定义JRDataSource以编程方式填充

问题是,我需要知道报表中存在哪些元素,以便调用相应的Web服务,所以我的问题是:如何以Java编程方式读取报表,以便识别需要填充的每个元素


报告不能全部以编程方式生成,因为它们的布局会不断更改,并且我们不能在每次更改时都更新我们的软件。

由于它是XML,您当然可以阅读所有内容并解析信息

由于JasperReports的工作方式正好相反,它通过JRDataSource拉取数据,而不是结构化数据推送、控制输出,因此如果可以拦截数据源,效果会更好。因此,如果您可以从数据源获得所需的信息,您可以替换数据源(委托给原始数据源),或者执行AOP


我不确定你问题的确切要求。也许可以编辑问题的确切答案。

因为它是XML,所以您当然可以阅读所有内容并解析您的信息

由于JasperReports的工作方式正好相反,它通过JRDataSource拉取数据,而不是结构化数据推送、控制输出,因此如果可以拦截数据源,效果会更好。因此,如果您可以从数据源获得所需的信息,您可以替换数据源(委托给原始数据源),或者执行AOP


我不确定你问题的确切要求。也许可以编辑问题的确切答案。

通过使用以下代码获取报告所需的所有元素(字段):

JasperReport report = (JasperReport) JRLoader.loadObjectFromFile(path + "MyTestReport.jasper");
JRField[] gf = report.getFields();

通过使用以下代码获取报表所需的所有元素(字段):

JasperReport report = (JasperReport) JRLoader.loadObjectFromFile(path + "MyTestReport.jasper");
JRField[] gf = report.getFields();