diff --git a/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/楚雄彝族自治州人口变化及其对教育的影响20240507.docx b/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/楚雄彝族自治州人口变化及其对教育的影响20240507.docx index 3643e7eb..c13e8091 100644 Binary files a/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/楚雄彝族自治州人口变化及其对教育的影响20240507.docx and b/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/楚雄彝族自治州人口变化及其对教育的影响20240507.docx differ diff --git a/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测.xlsx b/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测.xlsx index 74f122f6..fa96f7f5 100644 Binary files a/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测.xlsx and b/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测.xlsx differ diff --git a/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测【成果】.xlsx b/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测【成果】.xlsx new file mode 100644 index 00000000..8145d51d Binary files /dev/null and b/Doc/待处理/市/【1】学前教育入园总量变化及预测/学前教育入园总量变化及预测【成果】.xlsx differ diff --git a/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/【昭通市】学前教育幼儿在园总量变化及预测.xlsx b/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/【昭通市】学前教育幼儿在园总量变化及预测.xlsx deleted file mode 100644 index 1591991f..00000000 Binary files a/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/【昭通市】学前教育幼儿在园总量变化及预测.xlsx and /dev/null differ diff --git a/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测.xlsx b/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测.xlsx new file mode 100644 index 00000000..626e5f19 Binary files /dev/null and b/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测.xlsx differ diff --git a/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测【成果】.xlsx b/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测【成果】.xlsx new file mode 100644 index 00000000..b601f84c Binary files /dev/null and b/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测【成果】.xlsx differ diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java index 1355570d..0c0fc3c7 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java @@ -72,10 +72,10 @@ public class C1 { List charts = ExcelKit.getSortListForXWPFChart(doc.getCharts()); //1号模板,数据在图表5和28中 - XSSFWorkbook workbook = charts.get(4).getWorkbook(); + int firstChartNumber = 5, secondChartNumber = 28; + XSSFWorkbook workbook = charts.get(firstChartNumber - 1).getWorkbook(); List> source1 = ExcelKit.readSheet(workbook); - - XSSFWorkbook workbook2 = charts.get(27).getWorkbook(); + XSSFWorkbook workbook2 = charts.get(secondChartNumber - 1).getWorkbook(); List> source2 = ExcelKit.readSheet(workbook2); //遍历source1 diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java new file mode 100644 index 00000000..70286c5d --- /dev/null +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java @@ -0,0 +1,141 @@ +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.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 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; + +public class C2 { + //开始读取市州word文档 + static String parentPath = "D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510"; + + //示例Excel + static String sampleExcelPath = "D:\\dsWork\\YunNanDsBase\\Doc\\待处理\\市\\【2】学前教育幼儿在园总量变化及预测\\学前教育幼儿在园总量变化及预测.xlsx"; + + public static void main(String[] args) throws IOException, InvalidFormatException { + //初始化数据库连接 + LocalMysqlConnectUtil.Init(); + //实例化 + ReadDocxUtil ru = new ReadDocxUtil(); + + //目标Excel,就是把文件名解析出来后,后面添加上【成果】,需要动态计算获取,不能写死 + String excelPath = sampleExcelPath.replace(".xlsx", "【成果】.xlsx"); + ExcelKit.delExcel(excelPath); + + //结果Excel + XSSFWorkbook outWorkbook = new XSSFWorkbook(); + //结果Sheet + XSSFSheet outSheet = ExcelKit.CreateSheet(outWorkbook); + //样式 + XSSFCellStyle headerStyle = ExcelKit.getHeaderStyle(outWorkbook); + XSSFCellStyle dataStyle = ExcelKit.getDataStyle(outWorkbook); + + //拷贝文件头 + ExcelKit.CopyHead(sampleExcelPath, outSheet, headerStyle); + + //找到parentPath下一级目录中所有文件 + List files = FileUtil.loopFiles(parentPath, file -> true); + int rowIndex = 0; + //处理这个目录 + if (files != null) { + for (File file : files) { + //判断file是不是目录,是目录的需要跳过 + if (file.isDirectory()) continue; + //城市名称 + String cityName = ru.getCityOrAreaName(file.getName()); + String fileName = file.getName(); + + //判断是否为docx文件 + if (fileName.endsWith(".docx") && !fileName.startsWith("~")) { + System.out.println("正在处理" + cityName + "市州文件..."); + //读取文件 + String inputUrl = file.getAbsolutePath(); + InputStream is = new FileInputStream(inputUrl); + ZipSecureFile.setMinInflateRatio(-1.0d); + XWPFDocument doc = new XWPFDocument(is); + //排序后的图表 + List charts = ExcelKit.getSortListForXWPFChart(doc.getCharts()); + + //1号模板,数据在图表6和29中 + int firstChartNumber = 6, secondChartNumber = 29; + XSSFWorkbook workbook = charts.get(firstChartNumber - 1).getWorkbook(); + List> source1 = ExcelKit.readSheet(workbook); + XSSFWorkbook workbook2 = charts.get(secondChartNumber - 1).getWorkbook(); + List> source2 = ExcelKit.readSheet(workbook2); + + String c2 = "总在园数"; + //遍历source1 + for (List r : source1) { + Row outRow = outSheet.createRow(++rowIndex); + // 导出数据 + //年份,总量分类,区域分类,总量数值,区域数值,行政区划,上级行政区划 + ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst(), c2, "", r.get(4), "", cityName, "云南省")), dataStyle); + } + //遍历source2 + for (int i = 0; i < source2.size(); i++) { + if (i == 0) continue;//跳过2022年,这个年份重复了 + List r = source2.get(i); + Row outRow = outSheet.createRow(++rowIndex); + // 导出数据 + //年份,总量分类,区域分类,总量数值,区域数值,行政区划,上级行政区划 + ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst(), c2, "", r.get(4), "", cityName, "云南省")), dataStyle); + } + //2022年基数:遍历source2 + for (int i = 0; i < source2.size(); i++) { + List r = source2.get(i); + Row outRow = outSheet.createRow(++rowIndex); + // 导出数据 + //年份,总量分类,区域分类,总量数值,区域数值,行政区划,上级行政区划 + ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst(), "2022年基数", "", source2.getFirst().get(4), + "", cityName, "云南省")), dataStyle); + } + + //城区+镇区+乡村 + List areaList = new ArrayList<>(); + areaList.add("城区"); + areaList.add("镇区"); + areaList.add("乡村"); + + for (int k = 0; k < areaList.size(); k++) { + String areaName = areaList.get(k); + + for (int i = 0; i < source1.size(); i++) { + List r = source1.get(i); + Row outRow = outSheet.createRow(++rowIndex); + //年份,总量分类,区域分类,总量数值,区域数值,行政区划,上级行政区划 + ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst(), "", areaName, "", + r.get(k + 1), cityName, "云南省")), dataStyle); + } + for (int i = 0; i < source2.size(); i++) { + if (i == 0) continue; + List r = source2.get(i); + Row outRow = outSheet.createRow(++rowIndex); + //年份,总量分类,区域分类,总量数值,区域数值,行政区划,上级行政区划 + ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst(), "", areaName, "", + r.get(k + 1), cityName, "云南省")), dataStyle); + } + } + } + } + } + //保存文件 + ExcelKit.saveExcel(excelPath, outWorkbook); + System.out.println("市州所有文件处理完成!"); + } +}