From f56f012724577b827d659b0b28ee69353020ddbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Tue, 12 Nov 2024 15:05:10 +0800 Subject: [PATCH] 'commit' --- ... 教育资源配置发展预测(人).xlsx} | Bin .../dsideal/base/Tools/FillData/City/C10.java | 2 +- .../dsideal/base/Tools/FillData/City/C11.java | 108 ++++++++++++++++++ 3 files changed, 109 insertions(+), 1 deletion(-) rename Doc/待处理/市/【11】教育资源配置发展预测/{【昭通市】教育资源配置发展预测(人).xlsx => 教育资源配置发展预测(人).xlsx} (100%) create mode 100644 src/main/java/com/dsideal/base/Tools/FillData/City/C11.java diff --git a/Doc/待处理/市/【11】教育资源配置发展预测/【昭通市】教育资源配置发展预测(人).xlsx b/Doc/待处理/市/【11】教育资源配置发展预测/教育资源配置发展预测(人).xlsx similarity index 100% rename from Doc/待处理/市/【11】教育资源配置发展预测/【昭通市】教育资源配置发展预测(人).xlsx rename to Doc/待处理/市/【11】教育资源配置发展预测/教育资源配置发展预测(人).xlsx diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java index 5de1fe42..8f119dbd 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java @@ -78,7 +78,7 @@ public class C10 { XSSFWorkbook workbook = charts.get(firstChartNumber).getWorkbook(); List> source1 = ExcelKit.readSheet(workbook, 6);//从2017年开始 - workbook = charts.get(firstChartNumber).getWorkbook(); + workbook = charts.get(secondChartNumber).getWorkbook(); List> source3 = ExcelKit.readSheet(workbook, 2);//从2023年开始 //遍历source1 diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C11.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C11.java new file mode 100644 index 00000000..1dcfb8d0 --- /dev/null +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C11.java @@ -0,0 +1,108 @@ +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 C11 { + //开始读取市州word文档 + static String parentPath = "D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510"; + + //示例Excel + static String sampleExcelPath = "D:\\dsWork\\YunNanDsBase\\Doc\\待处理\\市\\【11】教育资源配置发展预测\\教育资源配置发展预测(人).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()); + + //数据在图表2 + int firstChartNumber = 36,secondChartNumber = 37; + + XSSFWorkbook workbook = charts.get(firstChartNumber).getWorkbook(); + List> source1 = ExcelKit.readSheet(workbook, 6);//从2017年开始 + + workbook = charts.get(firstChartNumber).getWorkbook(); + List> source3 = ExcelKit.readSheet(workbook, 2);//从2023年开始 + + //遍历source1 + for (List r : source1) { + Row outRow = outSheet.createRow(++rowIndex); + // 导出数据 + //上级行政区划,行政区划,年份,城镇人口变化,城镇人口预测,乡村人口变化,乡村人口预测 + int year = Integer.parseInt(r.getFirst()); + //城镇 + double cvalue = Double.parseDouble(r.get(1)); + //乡村 + double xvalue = Double.parseDouble(r.get(2)); + + if (year <= 2023) { + ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList("云南省",cityName, r.getFirst(), String.format("%.2f", cvalue), "",String.format("%.2f", xvalue),"")), dataStyle); + } else { + ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList("云南省",cityName, r.getFirst(),"", String.format("%.2f", cvalue),"" ,String.format("%.2f", xvalue))), dataStyle); + } + } + } + } + } + //保存文件 + ExcelKit.saveExcel(excelPath, outWorkbook); + System.out.println("市州所有文件处理完成!"); + } +}