如何根据条件设置报表单元格合并原创
10人赞赏了该文章
3,745次浏览
编辑于2023年02月24日 13:36:58
关键词:报表、单元格合并
一、需求
如下数据,要求在物料数据相同的情况下,相同的单价值的单元格进行合并
二、思路与方案
在报表表单插件的setMergeColums(List<String> columns)方法中,把需要合并的列(单价)添加到columns集合中,然后再遍历物料列的数据,当物料前行数据和上一行数据不一样时,取消单价列该行与上一行的合并
三、实现过程
public class OrderRptdemo extends AbstractReportFormPlugin implements Plugin { private static final String MERGECOLUM= "kded_pricefield";//合并单元格字段 private static final String CONDITION_FIELD="kded_materielfield";//条件字段 @Override public void setMergeColums(List<String> columns) { columns.add(MERGECOLUM); super.setMergeColums(columns); } @Override public void packageData(PackageDataEvent packageDataEvent) { ReportColumn c = (ReportColumn)packageDataEvent.getSource(); //当前读取的列 String fieldKey = c.getFieldKey(); if (fieldKey.equals(CONDITION_FIELD)){ //某列某行单元格的数据 String s = packageDataEvent.getFormatValue().toString(); //获取上一行数据 String condition_prevalue = this.getPageCache().get("srstatusa_prevalue"); if (condition_prevalue==null||condition_prevalue.isEmpty()){ ; }else if (!condition_prevalue.equals(s)){ //设置取消某列当前行与上一行的合并 packageDataEvent.getNoMergeKey().add(MERGECOLUM); } //把当前物料所在单元格数据保存到页面缓存中 this.getPageCache().put("srstatusa_prevalue",s); } super.packageData(packageDataEvent); } }
四、效果图
预览报表,效果图如下:4-7行的单价合并,第3行的单价和第4-7行的单价不合并,
五、开发环境版本
V5.0.012
六、参考资料
demol.zip(0.94KB)
kded_mycloud-kded_reqord-20230 …(19.01KB)
赞 10
10人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读