JAVA excel合并单元格原生poi

合并后的效果

直接上代码 (该方法为如果指定行的单元格里面的值一致则进行合并,直接粘贴使用即可)

     ** @param sheet* @param colIdx    合并的列* @param startRow  起始行* @param stopRow    结束行* @param isForward  是否递进合并其它列* @param forwardToColIdx 递进到的列*/public void mergeRowCell(HSSFSheet sheet,int colIdx,int startRow,int stopRow ,boolean isForward,int forwardToColIdx){String compareValue = null;int beginRow = startRow;int endRow = startRow;for(int i=startRow;i<=stopRow; ++i){String value = sheet.getRow(i).getCell(colIdx).getRichStringCellValue()==null ? "":sheet.getRow(i).getCell(colIdx).getRichStringCellValue().toString();if(i == startRow){compareValue = value;}else{if(compareValue.equals(value)){//相同,则设置重复的值为空sheet.getRow(i).getCell(colIdx).setCellValue("");endRow = i;}else {//不同,则合并之前相同的单元格if(beginRow < endRow){CellRangeAddress cellRangeAddress = new CellRangeAddress(beginRow, endRow, colIdx, colIdx);sheet.addMergedRegion(cellRangeAddress);HSSFCellStyle jz = workbook.createCellStyle();//新建单元格样式jz.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中jz.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中if(isForward){//递进合并下一列int nextColIndex = colIdx;if(colIdx < forwardToColIdx){nextColIndex ++;}else if(colIdx > forwardToColIdx){nextColIndex --;}else{return;}mergeRowCell(sheet, nextColIndex, beginRow, endRow, isForward, forwardToColIdx);}}compareValue = value;beginRow = i;endRow = i;}}}if(beginRow < endRow){CellRangeAddress cellRangeAddress = new CellRangeAddress(beginRow, endRow, colIdx, colIdx);sheet.addMergedRegion(cellRangeAddress);HSSFCellStyle jz = workbook.createCellStyle();//新建单元格样式jz.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中jz.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中if(isForward){//递进合并下一列int nextColIndex = colIdx;if(colIdx < forwardToColIdx){nextColIndex ++;}else if(colIdx > forwardToColIdx){nextColIndex --;}else{return;}mergeRowCell(sheet, nextColIndex, beginRow, endRow, isForward, forwardToColIdx);}}}

在这里插入代码片

public ResponseEntity  InspectionReport(){创建sheetworkbook = new HSSFWorkbook();HSSFSheet sheet = workbook.createSheet("sheet");创建行HSSFRow row4 = sheet.createRow(1);生成表头List<String> objects = new ArrayList<String>();objects.add("序号");objects.add("姓名");objects.add("年龄");objects.add("等级");objects.add("职位");objects.add("性别");objects.add("创建时间");objects.add("识别时间");FileInputStream inputStream = null;List<ReportEntity> list=testService.findAllStudent();           if (CollectionUtils.isNotEmpty(list)) {int num = 1;for (int i = 0; i < list.size(); i++) {ReportEntity potrolTask = list.get(i);//potrolTask.HSSFRow row5 = sheet.createRow(num);row5.createCell(0).setCellValue(potrolTask.getInterval());row5.createCell(1).setCellValue(potrolTask.getEquipment());row5.createCell(2).setCellValue(potrolTask.getComponent());row5.createCell(3).setCellValue(potrolTask.getPoint());String alarmType = potrolTask.getAlarmType();row5.createCell(4).setCellValue(potrolTask.getResult());row5.createCell(6).setCellValue(potrolTask.getMessage());row5.createCell(7).setCellValue(potrolTask.getSureTime());row5.createCell(8).setCellValue(potrolTask.getType());num++;}}//调用方法合并单元格for(int i=0;i<3;i++){mergeRowCell(sheet,i, 1, list.size()+1, false, 0);}
}大概就是这样了,后期会更新 导出csv或excel的工具类简单实用,喜欢刘关注我吧,本人博客只针对工作中用到的技术点进行更新

JAVA导出excel 动态合并单元格相关推荐

  1. poi 导出Excel 动态 合并单元格

    public String arrearagePeriodExport(ArrearageParam param) {param.setPageNo(1);param.setPageSize(Inte ...

  2. Java 利用hutool工具实现导出excel并合并单元格

    Java 利用hutool工具实现导出excel并合并单元格 controller层调用service,就一个核心方法,没错就下面这个代码就能实现了.前提是项目里面要引用hutool包.把我这个复制到 ...

  3. Springboot导出excel,合并单元格示例

    原文链接:Springboot导出excel,合并单元格示例 更多文章,欢迎访问:Java知音,一个专注于技术分享的网站 以下用一个示例来说明springboot如何导出数据到excel. 首先引入M ...

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

    java导出excel一般都是2种情况,一种是依赖一个实体类进行导出,或者把数据查询出来当成一个视图,对视图进行创建实体:另一种方式就是通过数据还要计算,然后一块统计,那么就不是很好处理了,我采用的是 ...

  5. easyexcel导出excel自定义合并单元格【动态表头和动态数据均可以自由合并】

    网上合并单元格的博客还是很多的,大家自行舍取吧.本文主要讲解固定与不固定的表头和内容如何合并 参考官网 https://easyexcel.opensource.alibaba.com/docs/cu ...

  6. java excel导出 jxl_java使用JXL导出Excel及合并单元格

    jxl是一个韩国人写的java操作excel的工具,在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文支持 ...

  7. java导出excel 边框不全_POI导出excel,合并单元格后没有边框

    导出的excel合并单元格有两种方法: 第一种: sheet.addMergedRegion(new CellRangeAddress(开始行, 结束行, 开始列, 结束列)); 这样就可以合并单元格 ...

  8. layui导出excel动态拆分单元格一个单元格显示多行数据合并单元格

    需求如图 首先说明是不能拆分单元格的,因为单元格是最小单位.只能通过合并单元格来实现. 实现思路:点击导出按钮,去请求后端数据.data数据如下: [{OrderNo: 'No637829645038 ...

  9. jxls导出excel,合并单元格的两种方式

    1.引入maven依赖: <dependency><groupId>org.projectlombok</groupId><artifactId>lom ...

最新文章

  1. Windows Phone 7 中的页面和弹出框
  2. Python 操作数据库(1)
  3. MCP3202的使用
  4. src.checkVector(2, CV_32F) == 4 dst.checkVector(2, CV_32F) ==4
  5. Python 技术篇-用base64库对音频、图片等文件进行base64编码和解码实例演示
  6. Python爬取京东商品
  7. 神策数据完成B轮融资1100万美元,DCM领投、红杉跟投
  8. Failed to execute goal on project xxx: Could not resolve dependencies for project com
  9. 计算机网络之Web应用
  10. ccs变量观察窗口在哪_CCS3.3查看变量图形
  11. IIS 发布之后 您要找的资源已被删除、已更名或暂时不可用。 404.0 解决方法
  12. java date 没有毫秒,java – SimpleDateFormat没有正确解析毫秒
  13. 最新版《神经网络和深度学习》中文版.pdf
  14. 深入了解示波器(五):实时采样与等效时间采样
  15. mw150um 驱动程序win10_Intel网卡驱动Win10专版 64位
  16. 2014版C 语言程序设计基础,清华大学出版社-图书详情-《C/C++程序设计基础与实践教程》...
  17. SV宏定义中反斜杠(\),反引号(`),双反引号(``)的作用
  18. 人工智能发展历史概述
  19. html字母输出空格,如何在网页中插入html中文空格与英文空格
  20. primeng dropdown ngmodel 选择项初始化

热门文章

  1. 公文培训--如何写好通知
  2. 布林通道参数用20还是26_布林线参数13好还是20好
  3. 了解了未知的他人的事情
  4. 小米2 usb电脑无法识别或者Android开发工具eclipse不能识别
  5. 在大图中随机裁取一副小图,并输出小图中心点像素位置
  6. 竖脊肌(05):屈腿硬拉
  7. 用鼠标键盘来控制你的Android手机——同屏显示简单教程
  8. 数论概论读书笔记 23.二次互反律的证明
  9. 东南亚语种分词和词频统计
  10. 毕业设计 基于Stm32的蓝牙便携手环 - 物联网 单片机