diff --git a/src/main/java/com/xujie/sys/common/utils/ExcelTemplate.java b/src/main/java/com/xujie/sys/common/utils/ExcelTemplate.java index 3c4adcc0..05e89916 100644 --- a/src/main/java/com/xujie/sys/common/utils/ExcelTemplate.java +++ b/src/main/java/com/xujie/sys/common/utils/ExcelTemplate.java @@ -23,6 +23,8 @@ public class ExcelTemplate { private List> listVariables = new ArrayList<>(); // 存储需要合并的单元格区域信息:[列表起始索引, 列表结束索引, 列索引] private List mergeRegions = new ArrayList<>(); + // 存储需要设置行高的行信息:[起始行索引, 结束行索引, 行高] + private List rowHeights = new ArrayList<>(); // 是否下移形状格式 @Setter private boolean moveShape = false; @@ -117,10 +119,23 @@ public class ExcelTemplate { } } + /** + * 设置行高 + * @param startListIndex 起始行索引(相对于listVariables) + * @param endListIndex 结束行索引(相对于listVariables) + * @param height 行高(单位:点) + */ + public void setRowHeight(int startListIndex, int endListIndex, int height) { + if (startListIndex <= endListIndex) { + rowHeights.add(new int[]{startListIndex, endListIndex, height}); + } + } + public void clearAll(){ variables.clear(); listVariables.clear(); mergeRegions.clear(); + rowHeights.clear(); moveShape = false; moveSeal = false; cellStyle = false; @@ -640,6 +655,23 @@ public class ExcelTemplate { } } + // 处理行高设置 + if (dtlRowIndex >= 0 && !rowHeights.isEmpty()) { + for (int[] heightInfo : rowHeights) { + int startRow = dtlRowIndex + heightInfo[0]; + int endRow = dtlRowIndex + heightInfo[1]; + int height = heightInfo[2]; + + for (int rowIdx = startRow; rowIdx <= endRow; rowIdx++) { + XSSFRow row = sheet.getRow(rowIdx); + if (row != null) { + // 设置行高(Excel行高单位是1/20点,所以需要乘以20) + row.setHeight((short) (height * 20)); + } + } + } + } + return workbook; } } diff --git a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelServiceImpl.java b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelServiceImpl.java index 54706da7..0089589c 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelServiceImpl.java @@ -3018,6 +3018,11 @@ public class CoDelExcelServiceImpl implements CoDelExcelService { // 合并列1-3:参数顺序是 startRow, endRow, startCol, endCol, alignType template.addMergeRegion(firstRow, lastRow, 1, 3, 1); System.out.println(" -> 已合并列1-3(行" + firstRow + "到" + lastRow + ")"); + + // 拆箱场景下,第4-8列的行高设置为较矮的高度 + // 只有拆箱情况才需要调整行高 + template.setRowHeight(firstRow, lastRow, boxSeqNos.size()>2?18:26); + System.out.println(" -> 已设置行高(行" + firstRow + "到" + lastRow + "):15点"); } else { System.out.println(" -> 跳过合并:firstRow=" + firstRow + ", lastRow=" + lastRow); }