main
HuangHai 4 months ago
parent 02e6dc2fea
commit 79b2f67d2d

@ -13,20 +13,46 @@ import java.util.List;
import java.util.Map; import java.util.Map;
public class School2019 { public class School2019 {
public static void main(String[] args) { public static void main(String[] args) {
// 设置 com.alibaba.excel 的日志级别为 INFO // 一、关闭各种日志输出信息
Logger excelLogger = (Logger) LoggerFactory.getLogger("cn.idev.excel"); // 禁用 logback 的状态输出
excelLogger.setLevel(Level.INFO); 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"; String filePath = "D:/dsWork/2025年收集的人口与教育数据库20250328/2015-2020年的数据/基础教育/2019.xlsx";
// 创建一个Map来存储所有处理结果
Map<String, Map<String, Map<String, Integer>>> 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 sheetName Sheet
* @param skipRows * @param skipRows
* @param beanClass Bean * @param beanClass Bean
* @return Map
*/ */
private static <T> void processSheet(String filePath, String sheetName, int skipRows, Class<T> beanClass) { private static <T> Map<String, Map<String, Integer>> processSheet(String filePath, String sheetName, int skipRows, Class<T> beanClass) {
// 从指定行开始读取 // 从指定行开始读取
List<T> dataList = FastExcel.read(filePath) List<T> dataList = FastExcel.read(filePath)
.head(beanClass) .head(beanClass)
@ -67,17 +94,38 @@ public class School2019 {
} }
} }
// 输出分组统计结果 return cityDistrictMap;
System.out.println("Sheet: " + sheetName); }
for (Map.Entry<String, Map<String, Integer>> cityEntry : cityDistrictMap.entrySet()) {
String city = cityEntry.getKey();
System.out.println("市: " + city);
for (Map.Entry<String, Integer> districtEntry : cityEntry.getValue().entrySet()) { /**
System.out.printf(" 区: %s, 学校总数: %d%n", *
districtEntry.getKey(), *
districtEntry.getValue()); * @param allResults Map
*/
private static void printAllResults(Map<String, Map<String, Map<String, Integer>>> allResults) {
System.out.println("=== 2019年基础教育学校统计结果 ===");
// 按学校类型输出
for (Map.Entry<String, Map<String, Map<String, Integer>>> schoolTypeEntry : allResults.entrySet()) {
String schoolType = schoolTypeEntry.getKey();
System.out.println("\n【" + schoolType + "】");
int totalSchools = 0; // 统计该类型学校总数
for (Map.Entry<String, Map<String, Integer>> cityEntry : schoolTypeEntry.getValue().entrySet()) {
String city = cityEntry.getKey();
System.out.println(" " + city + "");
for (Map.Entry<String, Integer> 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);
} }
} }
} }
Loading…
Cancel
Save