Commit fec4288a by zhangxingmin

push

parent 8ea554f9
......@@ -11,6 +11,7 @@ import com.yd.oss.service.service.IFileTemplateService;
import com.yd.oss.service.service.OssService;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.*;
......@@ -164,14 +165,30 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
int neededBeneficiaryRows = beneficiaries.size() * 4 + (beneficiaries.size() - 1); // 每个受益人占4行,加上空行
int rowsToInsert = neededBeneficiaryRows - existingBeneficiaryRows;
if (rowsToInsert > 0) {
// 修复:在移动行之前处理合并区域
if (rowsToInsert != 0) {
// 获取并移除受影响的合并区域
List<CellRangeAddress> mergedRegionsToRemove = new ArrayList<>();
for (int i = 0; i < sheet.getNumMergedRegions(); i++) {
CellRangeAddress mergedRegion = sheet.getMergedRegion(i);
// 如果合并区域在移动的范围内,需要移除
if (mergedRegion.getFirstRow() >= secondHolderRowNum) {
mergedRegionsToRemove.add(mergedRegion);
}
}
// 移除受影响的合并区域
for (CellRangeAddress mergedRegion : mergedRegionsToRemove) {
sheet.removeMergedRegion(sheet.getMergedRegions().indexOf(mergedRegion));
}
// 下移后续内容,包括第二持有人资料
sheet.shiftRows(secondHolderRowNum, sheet.getLastRowNum(), rowsToInsert, true, false);
secondHolderRowNum += rowsToInsert; // 更新第二持有人资料的行号
} else if (rowsToInsert < 0) {
// 上移后续内容
sheet.shiftRows(secondHolderRowNum, sheet.getLastRowNum(), rowsToInsert, true, false);
secondHolderRowNum += rowsToInsert; // 更新第二持有人资料的行号
// 重新添加合并区域(位置已自动调整)
// 这里不需要手动重新添加,因为shiftRows会自动处理合并区域的移动
}
// 清除模板中的示例数据(保留"受益人资料"标题行)
......@@ -261,6 +278,7 @@ public class AppointmentExcelServiceImpl implements AppointmentExcelService {
// 确保第二持有人资料上方有一行空行
secondHolderRow = sheet.getRow(secondHolderRowNum);
if (secondHolderRow != null) {
// 修复:在添加空行前检查并处理合并区域
sheet.shiftRows(secondHolderRowNum, sheet.getLastRowNum(), 1, true, false);
// 创建一个空行
Row emptyRow = sheet.createRow(secondHolderRowNum);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment