客戶需要統計某個月內連續幾天的資料,前面兩三列跟後面的合計列是固定的,但是中間每個日期列是不固定的,這就要求日期列是要能動態生成,網上能查到的方法有兩種:
第一種是把1~31天的列全部用ireport畫出來,然後動態隱藏不需要的列
第二種是在**中新建jasperdesign物件,用**畫出來。
經過仔細分析,第一種思路不錯,但是動態列是有上限的,而且必須按照上限的標準畫報表,很容易造成整個報表被撐得很大,但是只有一點資料;第二種方式**量多,而且也不夠直觀,在ireport上拖拖拉拉已經很麻煩了,用**實現更加麻煩orz。
借用動態**的思路,先用ireport生成乙個模板,然後用字串接收對應.jrxml原始碼,類似這樣:
string s = "......"
然後計算好紙張的長寬、title、header、col、footer等等的長寬。類似這樣:
計算好這些東西之後,使用writer寫成.jrxml檔案,然後使用int headwith = 500;
string head = "+headwith+" height="
...">"
生成編譯後的檔案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的定...