From a01e3efc87ceb65cad008c60f20f3d3a5f70a3f9 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Wed, 9 Apr 2025 15:30:39 +0800 Subject: [PATCH] 'commit' --- .../Tools/JkyNewData/ExcelSheetChecker.java | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/main/java/com/dsideal/base/Tools/JkyNewData/ExcelSheetChecker.java diff --git a/src/main/java/com/dsideal/base/Tools/JkyNewData/ExcelSheetChecker.java b/src/main/java/com/dsideal/base/Tools/JkyNewData/ExcelSheetChecker.java new file mode 100644 index 00000000..59f4add4 --- /dev/null +++ b/src/main/java/com/dsideal/base/Tools/JkyNewData/ExcelSheetChecker.java @@ -0,0 +1,96 @@ +package com.dsideal.base.Tools.JkyNewData; + +import cn.idev.excel.ExcelReader; +import cn.idev.excel.FastExcel; +import cn.idev.excel.read.builder.ExcelReaderBuilder; +import cn.idev.excel.read.metadata.ReadSheet; +import com.dsideal.base.Tools.JkyNewData.Util.CloseLogUtil; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class ExcelSheetChecker { + public static void main(String[] args) { + CloseLogUtil.Init(); + + // Excel文件基础路径 + String basePath = "D:/dsWork/2025年收集的人口与教育数据库(20250328)/2015-2020年的数据/基础教育/"; + + // 处理2016年到2020年的文件 + for (int year = 2016; year <= 2020; year++) { + String excelPath = basePath + year + ".xlsx"; + System.out.println("\n开始处理 " + year + " 年的数据..."); + + // 创建File对象 + File excelFile = new File(excelPath); + + if (!excelFile.exists()) { + System.out.println("文件不存在: " + excelPath); + continue; + } + + try { + // 获取所有Sheet名称 + ExcelReaderBuilder excelReaderBuilder = FastExcel.read(excelPath); + ExcelReader excelReader = excelReaderBuilder.build(); + List sheetNames = new ArrayList<>(); + List sheets = excelReader.excelExecutor().sheetList(); + for (ReadSheet sheet : sheets) { + sheetNames.add(sheet.getSheetName()); + } + System.out.println(year + "年Excel文件包含 " + sheetNames.size() + " 个Sheet:"); + + // 遍历每个Sheet + for (String sheetName : sheetNames) { + System.out.println("\n检查Sheet: " + sheetName); + + // 读取Sheet数据,跳过前7行 + List> dataList = FastExcel.read(excelPath) + .sheet(sheetName) + .headRowNumber(7) + .doReadSync(); + + // 标记是否找到昆明市 + boolean found = false; + + // 遍历每一行数据 + for (int rowIndex = 0; rowIndex < dataList.size(); rowIndex++) { + Map row = dataList.get(rowIndex); + + // 遍历每一列 + for (Map.Entry entry : row.entrySet()) { + Object value = entry.getValue(); + String valueStr = value != null ? value.toString() : ""; + + // 检查是否等于"昆明市" + if (valueStr.equals("昆明市")) { + found = true; + // 获取列标识 + String columnKey = String.valueOf(entry.getKey()); + System.out.println("在 " + year + " 年的Sheet '" + sheetName + "' 中:"); + System.out.println(" 昆明市首次出现在第 " + (rowIndex + 8) + " 行(跳过7行后)"); + System.out.println(" 列标识: " + columnKey); + break; + } + } + + // 如果找到了昆明市,跳出循环 + if (found) { + break; + } + } + + if (!found) { + System.out.println("在 " + year + " 年的Sheet '" + sheetName + "' 中没有找到昆明市"); + } + } + } catch (Exception e) { + System.err.println("处理 " + year + " 年Excel文件时出错: " + e.getMessage()); + e.printStackTrace(); + } + } + System.out.println("\n所有年份处理完成"); + } +} \ No newline at end of file