|
|
|
@ -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<List<String>> sheetList = ExcelKit.readSheet(sourceExcel,4);
|
|
|
|
|
List<List<String>> sheetList = ExcelKit.readSheet(sourceExcel, 4);
|
|
|
|
|
//最后一行的数据就是整个市州的数据
|
|
|
|
|
List<String> rowData = sheetList.getLast();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
程序员看EXCEL数据整理出下面的规则,然后提供给AI,让其按Map<String,String>生成代码,其中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<String> 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<String> 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<String, String> 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("市州所有文件处理完成!");
|
|
|
|
|