2016-07-28 39 views
0

我想找到具有相同樣式的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中使用。另一個答案沒有解決如何從兩個不同的報告環境引用同一組樣式。 –

回答

2

使用參數來引用樣式文件的相對(或絕對)路徑。主報告,例如,可能包含:

<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

如果它適合你,請點擊複選標記(接受按鈕)。 –

相關問題