自定义工具,可以通过获取上一行行高设置后面所以行的高度
package org.springblade.modules.api.utils;import com.alibaba.excel.write.handler.RowWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.Row;public class CustomRowHeightHandler implements RowWriteHandler {private int rowHeight;public CustomRowHeightHandler(int rowHeight) {this.rowHeight = rowHeight;}@Overridepublic void beforeRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Integer integer, Integer integer1, Boolean aBoolean) {}@Overridepublic void afterRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) {row.setHeight((short)rowHeight);}@Overridepublic void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer integer, Boolean aBoolean) {}
}
导出的代码
/*** excel填充模版用** @param response 响应* @param templateFilePath 模版路径* @param inputFileName 导出文件名* @param List 数据列表* @param map 单个对象* @param sheetAt 第几个sheet* @param row 获取第几行的高度* @throws Exception*/public static void exportExcelByFillIn(HttpServletResponse response, String templateFilePath, String inputFileName,List<?> List, Map<String, Object> map, Integer sheetAt, Integer row) throws Exception {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileNamePath = URLEncoder.encode(inputFileName, "UTF-8");response.setHeader("Content-disposition", "attachment;filename=" + fileNamePath + ".xlsx");int rowHeight = getFourthRowHeightFromTemplate(templateFilePath, sheetAt, row);InputStream is = getInputStream(templateFilePath);ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(is)//从指定行后使设置行高.registerWriteHandler(new CustomRowHeightHandler(rowHeight)).excelType(ExcelTypeEnum.XLS).build();WriteSheet writeSheet = EasyExcel.writerSheet().build();// 填充列表数据FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();excelWriter.fill(List, fillConfig, writeSheet);// 填充map中的变量excelWriter.fill(map, writeSheet);excelWriter.finish();}/*** 获取上一行高度** @param templateFilePath* @param sheetAt* @param row* @return* @throws Exception*/public static int getFourthRowHeightFromTemplate(String templateFilePath, Integer sheetAt, Integer row) throws Exception {InputStream is = getInputStream(templateFilePath);Workbook workbook = WorkbookFactory.create(is);Sheet sheet = workbook.getSheetAt(sheetAt); // 第几个工作表Row fourthRow = sheet.getRow(row); // 第几行(索引从0开始)int rowHeight = fourthRow.getHeight();workbook.close();return rowHeight;}/*** 获取流** @param templateFilePath* @return* @throws Exception*/public static InputStream getInputStream(String templateFilePath) throws Exception {ClassPathResource res = new ClassPathResource(templateFilePath);InputStream is = res.getInputStream();return is;}