diff --git a/Doc/待处理/市/【7】概览/概览.xlsx b/Doc/待处理/市/【7】概览/概览.xlsx index 809c26ef..1618b06c 100644 Binary files a/Doc/待处理/市/【7】概览/概览.xlsx and b/Doc/待处理/市/【7】概览/概览.xlsx differ diff --git a/Doc/待处理/市/【7】概览/概览【成果】.xlsx b/Doc/待处理/市/【7】概览/概览【成果】.xlsx index 0f722bb6..e314a968 100644 Binary files a/Doc/待处理/市/【7】概览/概览【成果】.xlsx and b/Doc/待处理/市/【7】概览/概览【成果】.xlsx differ diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C7_Test.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C7_Test.java index b6b2a08b..4f339899 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C7_Test.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C7_Test.java @@ -1,26 +1,17 @@ package com.dsideal.base.Tools.FillData.City; -import cn.hutool.core.io.FileUtil; import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit; -import com.dsideal.base.Tools.FillData.ExcelKit.ExcelUtil; import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; import com.dsideal.base.Tools.Util.ReadDocxUtil; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; -import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.apache.poi.xwpf.usermodel.XWPFChart; -import org.apache.poi.xwpf.usermodel.XWPFDocument; +import com.jfinal.plugin.activerecord.Record; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; public class C7_Test { @@ -56,61 +47,92 @@ public class C7_Test { ExcelKit.CopyHead(sampleExcelPath, outSheet, headerStyle); //1、用POI打开指定文件EXCEL,获取它的最后一个有效数据行,就是这个城市的整体数据汇总 - List> sheetList = ExcelKit.readSheet(sourceExcel,4); + List> sheetList = ExcelKit.readSheet(sourceExcel, 4); + //最后一行的数据就是整个市州的数据 + List rowData = sheetList.getLast(); + + /* + 程序员看EXCEL数据整理出下面的规则,然后提供给AI,让其按Map生成代码,其中key使用 学段_指定指标,比如:学前_学校总数 + 学前: + 学校总数: I + 招生总数: O + 在校生总数:P + 教职工总数:M + 专任教师数:N + 小学: + 学校总数: S + 招生总数: Z + 在校生总数:AA + 教职工总数:X + 专任教师数:Y + 初中: + 学校总数: AD + 招生总数: AJ + 在校生总数:AK + 教职工总数:AH + 专任教师数:AI + 高中: + 学校总数: AN + 招生总数: AQ + 在校生总数:AR + 教职工总数:AO + 专任教师数:AP + 中职: + 学校总数: AU + 招生总数: AX + 在校生总数:AY + 教职工总数:AV + 专任教师数:AW + */ - for (List strings : sheetList) { - for (String string : strings) { - System.out.print(string+" "); - } - System.out.println(); - } -// -// /*2、按下面的列号读取相应的数据 -// 学前: -// 学校总数: I -// 招生总数: O -// 在校生总数:P -// 教职工总数:M -// 专任教师数:N -// 小学: -// 学校总数: S -// 招生总数: Z -// 在校生总数:AA -// 教职工总数:X -// 专任教师数:Y -// 初中: -// 学校总数: -// 招生总数: AD -// 在校生总数:AK -// 教职工总数:AH -// 专任教师数:AI -// 高中: -// 学校总数: AN -// 招生总数: AQ -// 在校生总数:AR -// 教职工总数:AO -// 专任教师数:AP -// 中职: -// 学校总数: AU -// 招生总数: AX -// 在校生总数:AY -// 教职工总数:AV -// 专任教师数:AW -// */ -// -// List stageList = new ArrayList<>(); -// stageList.add("学前"); -// stageList.add("小学"); -// stageList.add("初中"); -// stageList.add("高中"); -// stageList.add("中职"); -// for(String stage:stageList){ -// //按规则获取当前学段中的学校总数,招生总数,在校生总数,教职工总数,专任教师数 -// String schoolCount=ExcelKit.transLetter2Num("I"); -// -// } + // 初始化数据 + String[] a = {"学前", "小学", "初中", "高中", "中职"}; + String[] b = {"招生总数", "在校生总数", "教职工总数", "专任教师数"}; + String[][] data = { + {"学前", "学校总数", "I"}, + {"学前", "招生总数", "O"}, + {"学前", "在校生总数", "P"}, + {"学前", "教职工总数", "M"}, + {"学前", "专任教师数", "N"}, + {"小学", "学校总数", "S"}, + {"小学", "招生总数", "Z"}, + {"小学", "在校生总数", "AA"}, + {"小学", "教职工总数", "X"}, + {"小学", "专任教师数", "Y"}, + {"初中", "学校总数", "AD"}, + {"初中", "招生总数", "AJ"}, + {"初中", "在校生总数", "AK"}, + {"初中", "教职工总数", "AH"}, + {"初中", "专任教师数", "AI"}, + {"高中", "学校总数", "AN"}, + {"高中", "招生总数", "AQ"}, + {"高中", "在校生总数", "AR"}, + {"高中", "教职工总数", "AO"}, + {"高中", "专任教师数", "AP"}, + {"中职", "学校总数", "AU"}, + {"中职", "招生总数", "AX"}, + {"中职", "在校生总数", "AY"}, + {"中职", "教职工总数", "AV"}, + {"中职", "专任教师数", "AW"} + }; + // 创建存储结构+填充数据 + Map schoolData = new LinkedHashMap<>(); + for (String[] entry : data) { + String grade = entry[0]; + String metric = entry[1]; + String value = entry[2]; + schoolData.put(grade + "_" + metric, value); + } + //开始填表 + int rowIndex = 0; + for (String s : a) { + for (String t : b) { + Row outRow = outSheet.createRow(++rowIndex); + ExcelKit.putData(outRow, Arrays.asList("昭通市", t,"2023",s, rowData.get(ExcelKit.transLetter2Num(schoolData.get(s + "_" + t))),"云南省"), dataStyle); + } + } //保存文件 ExcelKit.saveExcel(excelPath, outWorkbook); System.out.println("市州所有文件处理完成!"); diff --git a/src/main/java/com/dsideal/base/Tools/FillData/ExcelKit/ExcelKit.java b/src/main/java/com/dsideal/base/Tools/FillData/ExcelKit/ExcelKit.java index 6bdee4ae..4dd57c8b 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/ExcelKit/ExcelKit.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/ExcelKit/ExcelKit.java @@ -304,8 +304,8 @@ public class ExcelKit { * @param letterColIdx 字母列索引 * @return rlt 返回字母列索引对应的数字索引 A -> 0 BA -> 52 CA -> 78 */ - public static long transLetter2Num(String letterColIdx) { - long rlt = 0; + public static int transLetter2Num(String letterColIdx) { + int rlt = 0; letterColIdx = letterColIdx.toUpperCase(); String[] sts = letterColIdx.split(""); int length = sts.length; @@ -327,6 +327,4 @@ public class ExcelKit { } return --rlt; } - - }