diff --git a/src/main/java/com/dsideal/base/Tools/Excel/ColumnConfig.java b/src/main/java/com/dsideal/base/Tools/Excel/ColumnConfig.java new file mode 100644 index 00000000..1a05598e --- /dev/null +++ b/src/main/java/com/dsideal/base/Tools/Excel/ColumnConfig.java @@ -0,0 +1,18 @@ +package com.dsideal.base.Tools.Excel; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ColumnConfig { + public int index; // Excel列索引 + public String name; // 列名 + public String type; // 数据类型 + + ColumnConfig(int index, String name, String type) { + this.index = index; + this.name = name; + this.type = type; + } +} diff --git a/src/main/java/com/dsideal/base/Tools/Excel/SchoolCount.json b/src/main/java/com/dsideal/base/Tools/Excel/Data/SchoolCount.json similarity index 100% rename from src/main/java/com/dsideal/base/Tools/Excel/SchoolCount.json rename to src/main/java/com/dsideal/base/Tools/Excel/Data/SchoolCount.json diff --git a/src/main/java/com/dsideal/base/Tools/Excel/School2019Map.java b/src/main/java/com/dsideal/base/Tools/Excel/SchoolWithMap.java similarity index 76% rename from src/main/java/com/dsideal/base/Tools/Excel/School2019Map.java rename to src/main/java/com/dsideal/base/Tools/Excel/SchoolWithMap.java index 0d60d20d..023f2d8f 100644 --- a/src/main/java/com/dsideal/base/Tools/Excel/School2019Map.java +++ b/src/main/java/com/dsideal/base/Tools/Excel/SchoolWithMap.java @@ -8,6 +8,8 @@ import com.alibaba.fastjson2.JSONObject; import java.io.FileNotFoundException; import java.io.FileReader; + +import com.dsideal.base.Tools.Excel.Util.ExcelUtil; import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; @@ -17,30 +19,16 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class School2019Map { - // 定义列配置类 - private static class ColumnConfig { - int index; // Excel列索引 - String name; // 列名 - String type; // 数据类型 - - ColumnConfig(int index, String name, String type) { - this.index = index; - this.name = name; - this.type = type; - } - } +public class SchoolWithMap { public static void main(String[] args) throws FileNotFoundException { - + // 一、关闭日志输出 // 禁用 logback 的状态输出 System.setProperty("logback.statusListenerClass", "ch.qos.logback.core.status.NopStatusListener"); - // 设置所有相关日志级别 Logger root = (Logger) LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME); root.setLevel(Level.ERROR); - // 设置特定包的日志级别 String[] packages = { "org.ehcache", @@ -50,17 +38,17 @@ public class School2019Map { "ch.qos.logback", "org.slf4j" }; - for (String pkg : packages) { Logger logger = (Logger) LoggerFactory.getLogger(pkg); logger.setLevel(Level.ERROR); logger.setAdditive(false); } - //初始化数据库连接 + + // 二、初始化数据库连接 LocalMysqlConnectUtil.Init(); // 读取配置文件 - String configPath = "D:\\dsWork\\YunNanDsBase\\src\\main\\java\\com\\dsideal\\base\\Tools\\Excel\\SchoolCount.json"; + String configPath = "D:/dsWork/YunNanDsBase/src/main/java/com/dsideal/base/Tools/Excel/Data/SchoolCount.json"; JSONObject config = JSON.parseObject(new FileReader(configPath)); String filePath = "D:/dsWork/2025年收集的人口与教育数据库(20250328)/2015-2020年的数据/基础教育/2019.xlsx"; @@ -114,9 +102,9 @@ public class School2019Map { for (Map data : dataList) { try { // 根据列配置获取数据 - String city = getColumnValue(data, columnConfigs.get("city")); - String district = getColumnValue(data, columnConfigs.get("district")); - int count = getColumnValueAsInt(data, columnConfigs.get("schoolCount")); + String city = ExcelUtil.getColumnValue(data, columnConfigs.get("city")); + String district = ExcelUtil.getColumnValue(data, columnConfigs.get("district")); + int count = ExcelUtil.getColumnValueAsInt(data, columnConfigs.get("schoolCount")); if (count > 0) { // 如果市不存在,创建新的 Map @@ -128,38 +116,12 @@ public class School2019Map { } catch (Exception e) { System.err.println("处理数据行时出错: " + data); e.printStackTrace(); - continue; // 继续处理下一行 } } return cityDistrictMap; } - /** - * 获取列值 - */ - private static String getColumnValue(Map data, ColumnConfig config) { - Object value = data.get(config.index); - return value != null ? value.toString() : ""; - } - - /** - * 获取列值并转换为整数 - */ - private static int getColumnValueAsInt(Map data, ColumnConfig config) { - Object value = data.get(config.index); - if (value == null) { - return 0; - } - if (value instanceof Number) { - return ((Number) value).intValue(); - } - try { - return Integer.parseInt(value.toString()); - } catch (NumberFormatException e) { - return 0; - } - } /** * 将统计结果保存到数据库 diff --git a/src/main/java/com/dsideal/base/Tools/Excel/Util/ExcelUtil.java b/src/main/java/com/dsideal/base/Tools/Excel/Util/ExcelUtil.java index 03cd9b63..eff36b0b 100644 --- a/src/main/java/com/dsideal/base/Tools/Excel/Util/ExcelUtil.java +++ b/src/main/java/com/dsideal/base/Tools/Excel/Util/ExcelUtil.java @@ -1,6 +1,10 @@ package com.dsideal.base.Tools.Excel.Util; +import com.dsideal.base.Tools.Excel.ColumnConfig; + +import java.util.Map; + public class ExcelUtil { // 将字母标号转换为列索引 public static int columnLetterToIndex(String columnLetter) { @@ -24,4 +28,31 @@ public class ExcelUtil { } return columnLetter.toString(); } + + + /** + * 获取列值 + */ + public static String getColumnValue(Map data, ColumnConfig config) { + Object value = data.get(config.index); + return value != null ? value.toString() : ""; + } + + /** + * 获取列值并转换为整数 + */ + public static int getColumnValueAsInt(Map data, ColumnConfig config) { + Object value = data.get(config.index); + if (value == null) { + return 0; + } + if (value instanceof Number) { + return ((Number) value).intValue(); + } + try { + return Integer.parseInt(value.toString()); + } catch (NumberFormatException e) { + return 0; + } + } }