diff --git a/src/main/java/com/dsideal/base/Tools/Excel/School2019.java b/src/main/java/com/dsideal/base/Tools/Excel/School2019.java index 4d4d89eb..4f91b2d9 100644 --- a/src/main/java/com/dsideal/base/Tools/Excel/School2019.java +++ b/src/main/java/com/dsideal/base/Tools/Excel/School2019.java @@ -13,20 +13,46 @@ import java.util.List; import java.util.Map; public class School2019 { + public static void main(String[] args) { - // 设置 com.alibaba.excel 的日志级别为 INFO - Logger excelLogger = (Logger) LoggerFactory.getLogger("cn.idev.excel"); - excelLogger.setLevel(Level.INFO); + // 一、关闭各种日志输出信息 + // 禁用 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", + "org.ehcache.core", + "org.ehcache.impl", + "org.terracotta", + "ch.qos.logback", + "org.slf4j" + }; + for (String pkg : packages) { + Logger logger = (Logger) LoggerFactory.getLogger(pkg); + logger.setLevel(Level.ERROR); + logger.setAdditive(false); // 防止日志向上传递 + } + + //二、业务逻辑开始 String filePath = "D:/dsWork/2025年收集的人口与教育数据库(20250328)/2015-2020年的数据/基础教育/2019.xlsx"; + // 创建一个Map来存储所有处理结果 + Map>> allResults = new HashMap<>(); + // 处理小学数据 - processSheet(filePath, "基教小学", 7, BeanSchool2019_XX.class); + allResults.put("小学", processSheet(filePath, "基教小学", 7, BeanSchool2019_XX.class)); // 处理初中数据 - processSheet(filePath, "基教初中", 7, BeanSchool2019_CZ.class); + allResults.put("初中", processSheet(filePath, "基教初中", 7, BeanSchool2019_CZ.class)); // 处理高中数据 - processSheet(filePath, "基教高中", 7, BeanSchool2019_GZ.class); + allResults.put("高中", processSheet(filePath, "基教高中", 7, BeanSchool2019_GZ.class)); + + // 最后统一输出所有结果 + printAllResults(allResults); } /** @@ -36,8 +62,9 @@ public class School2019 { * @param sheetName Sheet 表名称 * @param skipRows 跳过的行数 * @param beanClass Bean 类 + * @return 处理结果Map */ - private static void processSheet(String filePath, String sheetName, int skipRows, Class beanClass) { + private static Map> processSheet(String filePath, String sheetName, int skipRows, Class beanClass) { // 从指定行开始读取 List dataList = FastExcel.read(filePath) .head(beanClass) @@ -67,17 +94,38 @@ public class School2019 { } } - // 输出分组统计结果 - System.out.println("Sheet: " + sheetName); - for (Map.Entry> cityEntry : cityDistrictMap.entrySet()) { - String city = cityEntry.getKey(); - System.out.println("市: " + city); + return cityDistrictMap; + } - for (Map.Entry districtEntry : cityEntry.getValue().entrySet()) { - System.out.printf(" 区: %s, 学校总数: %d%n", - districtEntry.getKey(), - districtEntry.getValue()); + /** + * 统一输出所有处理结果 + * + * @param allResults 所有处理结果的Map + */ + private static void printAllResults(Map>> allResults) { + System.out.println("=== 2019年基础教育学校统计结果 ==="); + + // 按学校类型输出 + for (Map.Entry>> schoolTypeEntry : allResults.entrySet()) { + String schoolType = schoolTypeEntry.getKey(); + System.out.println("\n【" + schoolType + "】"); + + int totalSchools = 0; // 统计该类型学校总数 + + for (Map.Entry> cityEntry : schoolTypeEntry.getValue().entrySet()) { + String city = cityEntry.getKey(); + System.out.println(" " + city + ":"); + + for (Map.Entry districtEntry : cityEntry.getValue().entrySet()) { + int count = districtEntry.getValue(); + totalSchools += count; + System.out.printf(" %s:%d所%n", + districtEntry.getKey(), + count); + } } + + System.out.printf(" %s总数:%d所%n", schoolType, totalSchools); } } } \ No newline at end of file