工作筆記 笨辦法搞定jasper動態列

2021-08-02 23:52:52 字數 1273 閱讀 9171

客戶需要統計某個月內連續幾天的資料,前面兩三列跟後面的合計列是固定的,但是中間每個日期列是不固定的,這就要求日期列是要能動態生成,網上能查到的方法有兩種:

第一種是把1~31天的列全部用ireport畫出來,然後動態隱藏不需要的列

第二種是在**中新建jasperdesign物件,用**畫出來。

經過仔細分析,第一種思路不錯,但是動態列是有上限的,而且必須按照上限的標準畫報表,很容易造成整個報表被撐得很大,但是只有一點資料;第二種方式**量多,而且也不夠直觀,在ireport上拖拖拉拉已經很麻煩了,用**實現更加麻煩orz。

借用動態**的思路,先用ireport生成乙個模板,然後用字串接收對應.jrxml原始碼,類似這樣:

string s = "......"

然後計算好紙張的長寬、title、header、col、footer等等的長寬。類似這樣:

int headwith = 500; 

string head = "+headwith+" height="

...">"

計算好這些東西之後,使用writer寫成.jrxml檔案,然後使用

jasperdesign jdesign = jrxmlloader  

.load("/***/1.jrxml");

jasperreport jreport = jaspercompilemanager.compilereport(jdesign);

生成編譯後的檔案

到此動態列報表就能夠生成出來了。

與其對應的vo,如果有上限,可以使用反射動態賦值,如果沒有上限,可以使用動態**生成對應的vo。

缺點呢就是這動態報表改期了很麻煩,我不說大家也能想到。。

不過前面說到的兩種方式缺點也很明顯,乙個無法滿足自適應無上限列,另乙個嘛,報表不直觀,用ireport更容易畫好,而且效率也高,我個人認為用動態生成原始碼的方式要快不少(大部分**都copy從ireport那畫好的模板)

由於原始碼不在手上,只能記一下思路,望各位見諒。個人感覺這種方法的實現簡單粗暴,故稱作笨辦法~lol

SAP工作筆記

sap 筆記整理 sap筆記整理 1一 abap 開發部分 21 常用tcode se80 se38 se11 se10 se93 22 se11 是abap 字典,可以查詢資料庫欄位和儲存資訊。33 se10 用來查詢開發過的程式相關資訊。34 se93 用來發布程式,給程式乙個tcode.3 5...

工作筆記(二)

對 android系統源 情景分析 書中例子 在裝置驅動程式中 開啟裝置函式比如 freg open struct inode inode,sruct file filp 它的作用實質上就是將file這個檔案結構體中的空指標成員變數private data賦上你所要訪問的裝置的結構體的位址而已。以便...

工作筆記 ALG cscope

alg是路由器的功能,如果兩台pc之間用路由器相連並使用ftp傳輸資料,則內網的資料報經過路由器的時候會有兩個ip位址被替換掉,ip報頭的內網ip通過nat功能被替換掉和tcp報文中的ip被alg功能替換掉。如果兩台pc直接相連不經過路由器則資料報的這兩個ip就都不會被替換掉 vimrc是vim的定...