From 5d7b65670282a4fad015e37d567cfa171b162052 Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期二, 20 五月 2025 12:25:19 +0800 Subject: [PATCH] 基础代码 --- pt-common/src/main/java/com/ruoyi/common/easyExcel/MultiDropdownWriteHandler.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 50 insertions(+), 0 deletions(-) diff --git a/pt-common/src/main/java/com/ruoyi/common/easyExcel/MultiDropdownWriteHandler.java b/pt-common/src/main/java/com/ruoyi/common/easyExcel/MultiDropdownWriteHandler.java new file mode 100644 index 0000000..a76da78 --- /dev/null +++ b/pt-common/src/main/java/com/ruoyi/common/easyExcel/MultiDropdownWriteHandler.java @@ -0,0 +1,50 @@ +package com.ruoyi.common.easyExcel; + +import com.alibaba.excel.write.handler.AbstractSheetWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; +import org.apache.poi.ss.usermodel.DataValidation; +import org.apache.poi.ss.usermodel.DataValidationConstraint; +import org.apache.poi.ss.usermodel.DataValidationHelper; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.util.CellRangeAddressList; + +import java.util.Map; + +public class MultiDropdownWriteHandler extends AbstractSheetWriteHandler { + + // 使用 Map 存储列索引和对应的下拉选项 + private final Map<Integer, String[]> dropdownOptionsMap; + + public MultiDropdownWriteHandler(Map<Integer, String[]> dropdownOptionsMap) { + this.dropdownOptionsMap = dropdownOptionsMap; + } + + @Override + public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { + Sheet sheet = writeSheetHolder.getSheet(); + DataValidationHelper helper = sheet.getDataValidationHelper(); + + for (Map.Entry<Integer, String[]> entry : dropdownOptionsMap.entrySet()) { + int columnIndex = entry.getKey(); + String[] options = entry.getValue(); + + // 定义下拉框应用的单元格范围(这里假设从第1行到第100行) +// CellRangeAddressList addressList = new CellRangeAddressList(1, 100, columnIndex, columnIndex); + CellRangeAddressList addressList = new CellRangeAddressList(0, 100, columnIndex, columnIndex); + + // 创建下拉选项 + DataValidationConstraint constraint = helper.createExplicitListConstraint(options); + DataValidation dataValidation = helper.createValidation(constraint, addressList); + + // 设置校验 + dataValidation.setSuppressDropDownArrow(true); + dataValidation.setShowErrorBox(true); + + // 将校验应用到 sheet + sheet.addValidationData(dataValidation); + } + } +} + + -- Gitblit v1.7.1