**

java基于HuTool工具类ExcelWriter合并单元格

**
1.基于HuTool工具类ExcelWriter合并单元格并且使用 jdk1.8 lambda表达式
效果如下:
用姓名和编码相同的数据进行合并单元格

1.创建实体类

代码如下

import lombok.Data;import javax.persistence.Column;
import java.io.Serializable;
import java.sql.Timestamp;@Data
public class HeatOrderDto implements Serializable {/** 姓名 */private String staffNo;/** 编码 */private String terminalNumber;/** 时间1 */private Timestamp payOrderDate;/** 时间2 */private Timestamp createDate;/** 备注 */private String trxCode;}

2.导出步骤

  1. 查找数据库返回数据list: List heatOrderDtos
  2. 设置导出表头数据
  3. 用lambda表达式获取staffNo字段分组数据:staffNoGroupMaps
  4. 遍历数据,设置合并规则:
  5. 获取terminalNumber字段分组数据:terminalNumberGroupMaps,设置合并规则
  6. 将数据保存在list中
  7. ExcelWriter导出excel文件
  8. 代码如下:
  public void downloadDayReport(List<HeatOrderDto> heatOrderDtos, HttpServletResponse response) throws IOException {//定义基础数据List<String> rowHead = CollUtil.newArrayList("姓名", "编码", "时间1", "时间2",  "备注");ExcelWriter writer = ExcelUtil.getBigWriter();//写入标题writer.writeHeadRow(rowHead);//定义启始行int index = 1;int index2 = 1;List<List<Object>> rows = new LinkedList<>();//按照姓名分组数据汇总处理(lambda表达式,不了解可以百度)Map<String, List<HeatOrderDto>> staffNoGroupMaps =heatOrderDtos.stream().collect(Collectors.groupingBy(i->i.getStaffNo(),LinkedHashMap::new,Collectors.toList()));for (Map.Entry<String, List<HeatOrderDto>> listEntry : staffNoGroupMaps.entrySet()) {List<HeatOrderDto> staffNoList = listEntry.getValue();//根据数据条数设置合并单元格信息if(staffNoList.size() == 1){//一条数据不合并index = index + staffNoList.size();index2 = index2 + staffNoList.size();}else {//规则编写writer.merge(index, index + staffNoList.size() - 1, 0, 0,null, true);## 标题index = index + staffNoList.size();//按照编码进行分组Map<String, List<HeatOrderDto>> terminalNumberGroupMaps =staffNoList.stream().collect(Collectors.groupingBy(i->i.getTerminalNumber(),LinkedHashMap::new,Collectors.toList()));for (Map.Entry<String, List<HeatOrderDto>> list2Entry : terminalNumberGroupMaps.entrySet()) {List<HeatOrderDto> terminalNumberList = list2Entry.getValue();//根据数据条数设置合并单元格信息if(terminalNumberList.size() == 1){//一条数据不合并index2 = index2 + terminalNumberList.size();}else {//规则编写writer.merge(index2, index2 + terminalNumberList.size() - 1, 1, 1,null, true);index2 = index2 + terminalNumberList.size();}}}//保存数据staffNoList.forEach(sList->{List<Object> rowA = null;rowA = CollUtil.newArrayList(sList.getStaffNo(), sList.getTerminalNumber(), sList.getPayOrderDate(), sList.getCreateDate(), sList.getTrxCode());rows.add(rowA);});}//导出数据// 一次性写出内容,使用默认样式,强制输出标题writer.write(list, true);//response为HttpServletResponse对象response.setContentType("application/vnd.ms-excel;charset=utf-8");//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码response.setHeader("Content-Disposition", "attachment;filename=file.xlsx");ServletOutputStream out = response.getOutputStream();writer.flush(out, true);//此处记得关闭输出Servlet流IoUtil.close(out);}

java基于HuTool工具类ExcelWriter合并单元格相关推荐

  1. Java使用hutool工具类发送http请求

    Java使用hutool工具类发送网络请求 引入jar包 pom.xml添加以下hutool依赖 <dependency><groupId>cn.hutool</grou ...

  2. 【JAVA基础】在Word中合并单元格时删除重复值

    程序环境: 方法1:手动引入.将​ ​Free Spire.Doc for Java​ ​下载到本地,解压,找到lib文件夹下的Spire.Doc.jar文件.在IDEA中打开如下界面,将本地路径中的 ...

  3. Excel 求满足多个条件(2个条件,3个条件,....)的行的指定列的和公式,Excel根据汉字描述生成公式工具,支持合并单元格

    Excel 如何用公式求满足多个条件的行的指定列的和,使用这个工具,根据汉字描述自动生成需要的公式.本工具支持合并单元格 地址:http://www.excelfb.com/ 点击: Excel自动写 ...

  4. java poi导出Excel表,合并单元格

    其他参考文章: http://www.cnblogs.com/bmbm/archive/2011/12/08/2342261.html http://www.cnblogs.com/xuyuanjia ...

  5. java writablesheet_jxl加边框,jxl合并单元格,单元格的设置,单元格居中

    jxl加边框 WritableWorkbook wwb = Workbook.createWorkbook(os); WritableSheet ws = wwb.createSheet( " ...

  6. Java POI导出Excel时,合并单元格没有边框的问题

    今天用POI导出Excel的时候,发现导出的单元格确少边框,最后发现有2个方案可以解决. 方案一 CellRangeAddress的4个参数分别表示:起始行号,终止行号, 起始列号,终止列号 // 使 ...

  7. java+基于dom4j工具类_基于dom4j的xml映射实体的工具类(java)

    基于dom4j的xml映射实体的工具类(java) 工具是基于dom4j,使用反射使实体属性与xml的标签关联,目前兼容List,Map后续更新兼容. 历史更新: 发布-2019-6-22 增加注解@ ...

  8. html相同数据合并单元格合并单元格,基于JQuery实现相同内容合并单元格的代码...

    web前端开发的时候经常会遇到要做表单的页面或者做一些表格的效果如相同内容要同一个单元格里面显示,一般的方法是table里面在套table但是这种方法会增加页面的负担影响页面加载速度但是如果用DIV有 ...

  9. Hutool工具类ExcelWriter导出excel列宽自适应问题解决

    前言: 因为项目中需要使用到ExcelWriter导出excel的列宽自适应,下面为解决该问题的经过,希望可以对遇到同样问题的开发者有所帮助. 一.通过查询Hutool官方的api文档发现autoSi ...

最新文章

  1. MAC OS X的ACL扩展权限设置
  2. 11个笑话让你领悟人生
  3. php接口异常,api接口异常怎么办
  4. 如何用python打印田字格_如何用EXCEL做一套田字格模板?在家给小孩练习写字
  5. 《Django实战系列》
  6. python的模块(module)和包(package)
  7. 电脑软件从通过运行开启(耍帅必会)
  8. 集成googlepay,出现Service not registered
  9. 零基础学C语言之初识C语言(上)
  10. RTC实时时钟实验学习笔记一
  11. echarts tooltip层级
  12. 定义函数:判断一个数是否为素数,并调用
  13. CSS - 响应式布局(二)响应式栅格系统
  14. 学英语《每日一歌》之see you again(速度与激情7主题曲)
  15. 有计算机学的大学,Brandeis有计算机专业排名经验揭秘精简篇
  16. 智慧供应链专题——基于智慧大脑的供应链协同平台
  17. 第一次视频面试给了小米前端
  18. 2020—开发记录以及知识总结,持续更新
  19. javascript使用插件
  20. FPGA-自动售货机verilog

热门文章

  1. 桌面的「微信」坏了,「如何恢复」
  2. 无法定位程序输入点,于动态链接库xxx上的可能原因及解决方法
  3. ks检验与s-w 检验_简单的方法教会你,利用SPSS对数据进行正态性检验
  4. python 爬虫request ssl_Python request SSL证书问题
  5. linux 命令:ps 详解
  6. 理解c函数执行完后,释放内存
  7. 魔众微信管理系统,简单易用的微信公众号管理系统
  8. Pikachu靶场-暴力破解
  9. arm架构linux系统平板电脑推荐,x86平板电脑排行_X86平板电脑推荐成垃圾,ARM架构平板电脑品牌是王道...
  10. IPv6的DNS服务器