手动融合
来源:互联网 发布:淘宝购物节有哪些 编辑:程序博客网 时间:2024/05/19 22:47
table:表格;reference:参考列;col:需要融合的列;,beginRow:开始行数;endRow:结束行数。(开始行和结束行可用于虚模式获取数据时融合,使得虚模式取数时每次只融合刚取的数据,而非全部数据。)
//例如:相同id的编码、名称进行融合:meregeTable(0,12,table,"id",new String[]{"number","name"})
public static void meregeTable(int beginRow,int endRow,com.kingdee.bos.ctrl.kdf.table.KDTable table,String reference,String[] col){
if(beginRow<0){
beginRow=0;
}
if(endRow<0){
endRow=table.getRowCount()-1;
}
if(endRow<1||endRow-beginRow<1) return;
KDTMergeManager kmm = table.getMergeManager();
int[] indexs=new int[col.length];
for(int j=0,m=col.length;j<m;j++){
indexs[j]=table.getColumnIndex(col[j]);
}
int i=beginRow,temp=-1;
Object begin=null;
Object cur=null;
for(;i<=endRow;i++){
if(i==beginRow){
begin=table.getCell(i,reference).getValue();
cur=table.getCell(i,reference).getValue();
temp=i;
continue;
}
cur=table.getCell(i,reference).getValue();
if(cur!=null&&cur.equals(begin)){
continue;
}
for(int j=0,m=col.length;j<m;j++){
kmm.mergeBlock(temp, indexs[j], i-1, indexs[j], KDTMergeManager.SPECIFY_MERGE);
}
begin=table.getCell(i,reference).getValue();
temp=i;
}
for(int j=0,m=col.length;j<m;j++){
kmm.mergeBlock(temp, indexs[j], i-1, indexs[j], KDTMergeManager.SPECIFY_MERGE);
}
}