[alibaba/easyexcel]模板填充单元格合并问题

2024-05-17 633 views
4

一、使用2.2.6版本的模板填充功能,模板文件有多个数据集,其中有一个数据集需要合并的单元格。在填充数据的过程中,合并的单元格第一行正常,第二行开始,单元格未合并,如下图所示 image 二、我的模板文件 image 三、我的代码 image

回答

9

我也有相同的问题, 版本2.2.6 而且有的单元格格式丢失(粗体、自动换行),边框异常 微信截图_20210204103940 微信截图_20210204104019 微信截图_20210204104037

code: ```java public ByteArrayInputStream complexFill(Object data, String template, List lists) { ByteArrayOutputStream bOutput = new ByteArrayOutputStream(); InputStream inputStream; try { inputStream = new ClassPathResource(template).getInputStream(); } catch (IOException e) { return null; } ExcelWriter excelWriter = EasyExcel.write(bOutput) .excelType(".xls".equals(getFileType(template)) ? ExcelTypeEnum.XLS : ExcelTypeEnum.XLSX) .withTemplate(inputStream) .build(); WriteSheet writeSheet = EasyExcel.writerSheet().build(); FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); for (JSONArray list : lists) { excelWriter.fill(list, fillConfig, writeSheet); } excelWriter.fill(data, writeSheet); excelWriter.finish(); return new ByteArrayInputStream(bOutput.toByteArray()); } ```
5

我也有相同的问题, 版本2.2.6 而且有的单元格格式丢失(粗体、自动换行),边框异常 微信截图_20210204103940 微信截图_20210204104019 微信截图_20210204104037

code:

3

我也有相同的问题, 版本2.2.6 而且有的单元格格式丢失(粗体、自动换行),边框异常 微信截图_20210204103940 微信截图_20210204104019 微信截图_20210204104037 code: 我通过自定义的CellWriteHandler解决了。 `@Data @AllArgsConstructor @NoArgsConstructor public class ExcelColumnMergeHandler implements CellWriteHandler { //从哪列开始合并 private int mergeColumnIndex; //需要合并的列数 private int mergeColumnSize; …… @Override public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List list, Cell cell, Head head, Integer integer, Boolean aBoolean) { int currentRowIndex = cell.getRowIndex(); int currentColumnIndex = cell.getColumnIndex(); if (currentColumnIndex == mergeColumnIndex) { Row row = cell.getRow(); CellStyle cellStyle = cell.getCellStyle(); Cell cell1 = row.getCell(currentColumnIndex); cell1.setCellStyle(cellStyle); CellRangeAddress cellRangeAddress = new CellRangeAddress(currentRowIndex, currentRowIndex, currentColumnIndex, currentColumnIndex + mergeColumnSize); writeSheetHolder.getSheet().addMergedRegion(cellRangeAddress); cell.setCellStyle(cellStyle); } }

}`

2

您好,我也同样出现了相同的情况,请问您这里有得到解决吗 image