如何在DynamicReports和JasperReports中获得相同样式

问题描述:

我想找到具有相同样式的dynamicReports和jasperReports的最佳解决方案。我开始使用dynamicReports,但是我发现很难在那里创建不寻常的报告。在iReport图形编辑器中执行该操作要容易得多。所以现在我有50%的动态报告和Jasper 50%的报告。如何在DynamicReports和JasperReports中获得相同样式

现在我无法解决样式问题。我在Template类中创建了样式,字体等,并将其用于DynamicReports。经过一番魔像:

.setName("cellCenterStyle"); 
template().setColumnStyle(cellStyle) 

我能够使用他们的碧玉,但由于某些选项仍不能正常工作,例如这不是一个完整的解决方案:

.setDetailEvenRowStyle(Template.evenIntensivStyle) 

正在与动态,但碧玉忽略了。

所以,问题:

我能使用动态和碧玉与结构清晰,没有不必要的“魔术”一样的风格。 我喜欢* .css风格的解决方案,但任何帮助将不胜感激。

+0

它不是一个确切的重复,但我认为它有你要找的,或者至少是一个很好的起点是什么。 –

+0

@DaveJarvis对我来说,他似乎喜欢css风格的解决方案,这是外部风格......他只需要弄清楚如何加载动态报告 –

+0

@PetterFriberg:是的,这是问题的一部分。第二个问题是,其中一半在DynamicJasper中,另一半在iReport中使用。另一个答案没有解决如何从两个不同的报告环境引用同一组样式。 –

使用参数来引用样式文件的相对(或绝对)路径。主报告,例如,可能包含:

<template><![CDATA[$P{P_REPORT_STYLES_PATH} + "FontStyle.jrtx"]]></template> 
<parameter name="P_REPORT_BASE" class="java.lang.String"> 
    <defaultValueExpression><![CDATA[""]]></defaultValueExpression> 
</parameter> 
<parameter name="P_REPORT_RESOURCES_PATH" class="java.lang.String"> 
    <defaultValueExpression><![CDATA[$P{P_REPORT_BASE} + "resources/"]]></defaultValueExpression> 
</parameter> 
<parameter name="P_REPORT_STYLES_PATH" class="java.lang.String"> 
    <defaultValueExpression><![CDATA[$P{P_REPORT_RESOURCES_PATH} + "styles/"]]></defaultValueExpression> 
</parameter> 

这允许在iReport的(或的JasperSoft工作室)的报告,以引用的相对路径报告格式,如:

resources/styles/FontStyle.jrtx 

此路径与报告的.jasper文件位置有关。

然后,在DynamicJasper中,您可以传入一个报告参数。在DynamicJasper的API调用可能不符合API调用以下JasperReports的库调用,但它应该是足够的相似让整个想法:

reportParameters.put("P_REPORT_BASE", "/home/user/dev/reports/workspace"); 
    JasperFillManager.fillReport(..., reportParameters, dataSource); 

假设/home/user/dev/reports/workspace对于.jasper文件的位置,以及iReport/Jaspersoft Studio的工作空间位置,然后DynamicJasper和报表开发环境将查找并使用相同的样式文件。

的完整路径的样式文件,在这个例子中,将是:

/home/user/dev/reports/workspace/resources/styles/FontStyle.jrtx 

你的目录路径,当然会有所不同。


此时,您可以在两种环境中引用相同的样式。另请参见:

+0

谢谢你,戴夫,我会用它 – quento

+0

如果它适合你,请点击复选标记(接受按钮)。 –