JAVA导出excel 动态合并单元格
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 动态合并单元格相关推荐
- poi 导出Excel 动态 合并单元格
public String arrearagePeriodExport(ArrearageParam param) {param.setPageNo(1);param.setPageSize(Inte ...
- Java 利用hutool工具实现导出excel并合并单元格
Java 利用hutool工具实现导出excel并合并单元格 controller层调用service,就一个核心方法,没错就下面这个代码就能实现了.前提是项目里面要引用hutool包.把我这个复制到 ...
- Springboot导出excel,合并单元格示例
原文链接:Springboot导出excel,合并单元格示例 更多文章,欢迎访问:Java知音,一个专注于技术分享的网站 以下用一个示例来说明springboot如何导出数据到excel. 首先引入M ...
- java poi导出excel,合并单元格
java导出excel一般都是2种情况,一种是依赖一个实体类进行导出,或者把数据查询出来当成一个视图,对视图进行创建实体:另一种方式就是通过数据还要计算,然后一块统计,那么就不是很好处理了,我采用的是 ...
- easyexcel导出excel自定义合并单元格【动态表头和动态数据均可以自由合并】
网上合并单元格的博客还是很多的,大家自行舍取吧.本文主要讲解固定与不固定的表头和内容如何合并 参考官网 https://easyexcel.opensource.alibaba.com/docs/cu ...
- java excel导出 jxl_java使用JXL导出Excel及合并单元格
jxl是一个韩国人写的java操作excel的工具,在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文支持 ...
- java导出excel 边框不全_POI导出excel,合并单元格后没有边框
导出的excel合并单元格有两种方法: 第一种: sheet.addMergedRegion(new CellRangeAddress(开始行, 结束行, 开始列, 结束列)); 这样就可以合并单元格 ...
- layui导出excel动态拆分单元格一个单元格显示多行数据合并单元格
需求如图 首先说明是不能拆分单元格的,因为单元格是最小单位.只能通过合并单元格来实现. 实现思路:点击导出按钮,去请求后端数据.data数据如下: [{OrderNo: 'No637829645038 ...
- jxls导出excel,合并单元格的两种方式
1.引入maven依赖: <dependency><groupId>org.projectlombok</groupId><artifactId>lom ...
最新文章
- Windows Phone 7 中的页面和弹出框
- Python 操作数据库(1)
- MCP3202的使用
- src.checkVector(2, CV_32F) == 4 dst.checkVector(2, CV_32F) ==4
- Python 技术篇-用base64库对音频、图片等文件进行base64编码和解码实例演示
- Python爬取京东商品
- 神策数据完成B轮融资1100万美元,DCM领投、红杉跟投
- Failed to execute goal on project xxx: Could not resolve dependencies for project com
- 计算机网络之Web应用
- ccs变量观察窗口在哪_CCS3.3查看变量图形
- IIS 发布之后 您要找的资源已被删除、已更名或暂时不可用。 404.0 解决方法
- java date 没有毫秒,java – SimpleDateFormat没有正确解析毫秒
- 最新版《神经网络和深度学习》中文版.pdf
- 深入了解示波器(五):实时采样与等效时间采样
- mw150um 驱动程序win10_Intel网卡驱动Win10专版 64位
- 2014版C 语言程序设计基础,清华大学出版社-图书详情-《C/C++程序设计基础与实践教程》...
- SV宏定义中反斜杠(\),反引号(`),双反引号(``)的作用
- 人工智能发展历史概述
- html字母输出空格,如何在网页中插入html中文空格与英文空格
- primeng dropdown ngmodel 选择项初始化