樹狀結構報表增加編號

2021-06-06 01:02:44 字數 1460 閱讀 6788

在企業日常工作中,經常會需要下面這種型別的樹狀報表,既展現時按照層級以樹形展現,如下圖:

報表左表頭按照層級分類,此時要求在第二列增加乙個行號,用來顯示該行的編號,如上圖,增加行號可以使用潤幹的row()函式,通過該函式能計算出當前行的行號,再減去表頭的固定行就能實現行號的展現,但此時發現乙個問題,由於左表頭的的單位層級並不固定,有的有**,有的有兩級,這樣就會產生一些空,在顯示上要求把這些空行隱藏掉,這樣會導致產生的行號並不是連續的,如上圖,第5行會給隱藏掉,導致生成的行號並不是連續的。

要想生成連續的行號,就要算出該行上方有多少個空行,然後用當前的行號減去這個空行數,就能生成正確的行號,在報表中可以通過潤幹報表的層次座標動態來判斷,但是由於層級的不確定導致該表示式編寫起來有一定難度,此時可通過潤幹的api來動態實現。

潤幹的ireport物件為報表計算後的結果物件,通過對該物件的靈活使用能很好實現這一問題。下面介紹下實現方法:

1、讀取報表模板

reportdefine rd =  (reportdefine)reportutils.read(is);

//2、構建運算環境

context context = new context();

//3、計算報表,生成ireport

engine e = new engine( rd, context );

ireport  ireport = e.calc();

int rownum=ireport.getrowcount();

int colnum=ireport.getcolcount();

int j=1;

for(int i=7;i<=rownum;i++){//上表頭有6個空行,從第7行開始迴圈

inormalcell cell1 = ireport.getcell(i, (short)3);

inormalcell cell2 = ireport.getcell(i, (short)2);//第2列為左表頭,第三列為行號

if(cell2.getrowhidden()==false){//迴圈判斷第2列單元格是否隱藏,從而設定行號

cell1.setvalue(j);

j++;

string rptname = "rpt_"+double.tostring(math.random());//用bean形式發布報表

request.setattribute(rptname,ireport);

這樣,通過該jsp展示報表,就能實現帶有隱藏行的樹狀報表生成連續行號,如下圖:

樹狀結構報表增加編號

在企業日常工作中,經常會需要下面這種型別的樹狀報表,既展現時按照層級以樹形展現,如下圖 報表左表頭按照層級分類,此時要求在第二列增加乙個行號,用來顯示該行的編號,如上圖,增加行號可以使用潤幹的row 函式,通過該函式能計算出當前行的行號,再減去表頭的固定行就能實現行號的展現,但此時發現乙個問題,由於...

GridView 下增加自動編號列

此處是用gridview自帶分頁 this.gridview1.pageindex this.gridview1.pagesize container.dataitemindex 1 下面是用aspnetpager分頁控制項的情況 this.pager1.currentpageindex 1 thi...

SAP報表上增加命令按鈕

如何在sap的報表上新增命令按鈕,並通過該按鈕實現一些特定的功能?首先,要在top 中定義相應物件 type pools icon.tables sscrfields.data functxt type smp dyntxt.selection screen function key 1.butto...