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