easyPOI动态表头

3 篇文章 0 订阅
2 篇文章 0 订阅

数据不是一成不变的,表格数据的表头也是可删可减,这个时候怎么处理动态表头呢(此处动态表头的数据来自与后端查询所得数据,如果是固定类的动态表头请参考:http://doc.wupaas.com/docs/easypoi/easypoi-1c0u96flii98v 中的注解:isColumnHidden)

说明:没有使用过这个注解,网坛上有人说,这个只是隐藏好像还是会导出,这个光荣而又艰巨的任务就交给各位了

/**
 * 动态列导出
 * @param response
 * @param param 设置表的文件名和sheet名
 * @param headList 表头
 * @param list 数据源
 * @throws IOException
 */
public static void exportActiveSheet(HttpServletResponse response, ExportParams param, List<ExcelExportEntity> headList, List<Map<String, Object>> list) throws IOException {
    Workbook workbook = null;
    workbook = ExcelExportUtil.exportExcel(param, headList,list);
    if (workbook != null) {
        downLoadExcel(param.getIndexName(), response, workbook);
    }
}

 

在业务层你需要

List<ExcelExportEntity> colList = new ArrayList<>();定义全局的colList 就是表头设置
ExcelExportEntity colEntity = new ExcelExportEntity("表头名称", "键");
colEntity.setNeedMerge(true);
colEntity.setWidth(30);
colEntity.setHeight(20);
.....很多格式或姿势你都可以在这里设置
colList.add(colEntity);

动态列表头

ExcelExportEntity desginsGroup = new ExcelExportEntity("表头名称", "键");//设置整个动态列所属列可以不要名称
List<ExcelExportEntity> paramCols = new ArrayList<>();动态列表头的集合
list.forEach(item->{// list 动态列表头显示数据,使用forEach请注意自己jdk的版本
    // 为了方便后面匹配数据,这里指定key和名称最好一至,方便匹配数值
    // 动态列
    paramCols.add(new ExcelExportEntity(item.getOfficeName(), item.getOfficeName(),30));
});
desginsGroup.setList(paramCols);
colList.add(desginsGroup);

最后就是数据源了

List<Map<String, Object>> list2 = new ArrayList<Map<String, Object>>();
list.forEach(item->{
    Map<String, Object> valMap = new HashMap<String, Object>();
    valMap.put("projectName", item.getProjectName());
    List<Map<String, Object>> deliDetailList = new ArrayList<Map<String, Object>>();
    Map<String, Object> deliValMap = new HashMap<String, Object>();
    item.getList().forEach(item2->{
        deliValMap.put(item2.getOfficeName(), item2.getDesginArea());
    });
    deliDetailList.add(deliValMap);
    valMap.put("desgins", deliDetailList);
    list2.add(valMap);
});

怎么调用就不用我写了吧

 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值