diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index f6f85b5e..00000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index e229ea19..2efc1c3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,6 +60,12 @@
cos
${jfinal-cos.version}
+
+
+ com.alibaba
+ easyexcel
+ 4.0.3
+
diff --git a/src/main/java/com/dsideal/base/Tools/Excel/ExcelReader.java b/src/main/java/com/dsideal/base/Tools/Excel/ExcelReader.java
new file mode 100644
index 00000000..5b41537d
--- /dev/null
+++ b/src/main/java/com/dsideal/base/Tools/Excel/ExcelReader.java
@@ -0,0 +1,56 @@
+package com.dsideal.base.Tools.Excel;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import com.alibaba.excel.EasyExcel;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ExcelReader {
+ public static void main(String[] args) {
+ // 设置 com.alibaba.excel 的日志级别为 INFO
+ Logger excelLogger = (Logger) LoggerFactory.getLogger("com.alibaba.excel");
+ excelLogger.setLevel(Level.INFO);
+ String filePath = "D:/dsWork/2025年收集的人口与教育数据库(20250328)/2015-2020年的数据/基础教育/2019.xlsx";
+ String sheetName = "基教小学";
+
+ // 从第8行开始读取(跳过前7行)
+ List dataList = EasyExcel.read(filePath)
+ .head(SchoolData.class)
+ .sheet(sheetName)
+ .headRowNumber(7) // 跳过前7行
+ .doReadSync();
+
+ // 使用 Map 进行分组统计
+ Map> cityDistrictMap = new HashMap<>();
+
+ for (SchoolData data : dataList) {
+ if (data.getSchoolCount() > 0) {
+ String city = data.getCity();
+ String district = data.getDistrict();
+ int count = data.getSchoolCount();
+
+ // 如果市不存在,创建新的 Map
+ cityDistrictMap.putIfAbsent(city, new HashMap<>());
+
+ // 累加区对应的学校数量
+ cityDistrictMap.get(city).merge(district, count, Integer::sum);
+ }
+ }
+
+ // 输出分组统计结果
+ for (Map.Entry> cityEntry : cityDistrictMap.entrySet()) {
+ String city = cityEntry.getKey();
+ System.out.println("市: " + city);
+
+ for (Map.Entry districtEntry : cityEntry.getValue().entrySet()) {
+ System.out.printf(" 区: %s, 学校总数: %d%n",
+ districtEntry.getKey(),
+ districtEntry.getValue());
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/dsideal/base/Tools/Excel/ExcelUtil.java b/src/main/java/com/dsideal/base/Tools/Excel/ExcelUtil.java
new file mode 100644
index 00000000..402ad3ce
--- /dev/null
+++ b/src/main/java/com/dsideal/base/Tools/Excel/ExcelUtil.java
@@ -0,0 +1,42 @@
+package com.dsideal.base.Tools.Excel;
+
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ExcelUtil {
+ public static void main(String[] args) {
+ // 设置 com.alibaba.excel 的日志级别为 INFO
+ Logger excelLogger = (Logger) LoggerFactory.getLogger("com.alibaba.excel");
+ excelLogger.setLevel(Level.INFO);
+
+ // 测试字母标号转列索引
+ String columnLetter = "MM"; // 示例输入
+ int columnIndex = columnLetterToIndex(columnLetter);
+ System.out.printf("字母标号 %s 对应的列索引是: %d%n", columnLetter, columnIndex);
+ }
+
+ // 将字母标号转换为列索引
+ private static int columnLetterToIndex(String columnLetter) {
+ int index = 0;
+ for (int i = 0; i < columnLetter.length(); i++) {
+ char c = columnLetter.charAt(i);
+ if (c < 'A' || c > 'Z') {
+ throw new IllegalArgumentException("无效的字母标号: " + columnLetter);
+ }
+ index = index * 26 + (c - 'A' + 1);
+ }
+ return index - 1; // 列索引从 0 开始
+ }
+
+ // 将列索引转换为字母标号
+ private static String indexToColumnLetter(int index) {
+ StringBuilder columnLetter = new StringBuilder();
+ while (index >= 0) {
+ columnLetter.insert(0, (char) ('A' + (index % 26)));
+ index = (index / 26) - 1;
+ }
+ return columnLetter.toString();
+ }
+}
diff --git a/src/main/java/com/dsideal/base/Tools/Excel/SchoolData.java b/src/main/java/com/dsideal/base/Tools/Excel/SchoolData.java
new file mode 100644
index 00000000..dbed0eeb
--- /dev/null
+++ b/src/main/java/com/dsideal/base/Tools/Excel/SchoolData.java
@@ -0,0 +1,23 @@
+package com.dsideal.base.Tools.Excel;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class SchoolData {
+ @ExcelProperty(index = 1) // B列
+ private String schoolName;
+
+ @ExcelProperty(index = 3) // D列
+ private String schoolType;
+
+ @ExcelProperty(index = 5) // F列
+ private Integer schoolCount;
+
+ @ExcelProperty(index = 350) // MM列
+ private String city;
+
+ @ExcelProperty(index = 351) // MN列
+ private String district;
+}
\ No newline at end of file