diff --git a/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/昭通市人口变化及其对教育的影响20240416.docx b/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/昭通市人口变化及其对教育的影响20240416.docx index e4b1f9bf..40c066e5 100644 Binary files a/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/昭通市人口变化及其对教育的影响20240416.docx and b/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/昭通市人口变化及其对教育的影响20240416.docx differ diff --git a/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测.xlsx b/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测.xlsx index 2b309eec..3ee6df55 100644 Binary files a/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测.xlsx and b/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测.xlsx differ diff --git a/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测【成果】.xlsx b/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测【成果】.xlsx index d0370d4b..68149f12 100644 Binary files a/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测【成果】.xlsx and b/Doc/待处理/市/【2】学前教育幼儿在园总量变化及预测/学前教育幼儿在园总量变化及预测【成果】.xlsx differ 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 index 2465ddb7..ce455b0c 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java @@ -4,6 +4,7 @@ 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 com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.ss.usermodel.Row; @@ -86,7 +87,9 @@ public class C2 { Row outRow = outSheet.createRow(++rowIndex); // 导出数据 //年份,总量分类,区域分类,总量数值,区域数值,行政区划,上级行政区划 - ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst(), c2, "", r.get(4), "", cityName, "云南省")), dataStyle); + double xvalue = Double.parseDouble(r.get(4)); + String value = String.format("%.2f", xvalue); + ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst().split("\\.")[0], c2, "", value, "", cityName, "云南省")), dataStyle); } //2022年基数:遍历source2 for (int i = 0; i < source2.size(); i++) { @@ -94,7 +97,9 @@ public class C2 { Row outRow = outSheet.createRow(++rowIndex); // 导出数据 //年份,总量分类,区域分类,总量数值,区域数值,行政区划,上级行政区划 - ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst(), "2022年基数", "", source2.getFirst().get(4), + double xvalue = Double.parseDouble(source2.getFirst().get(4)); + String value = String.format("%.2f", xvalue); + ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst().split("\\.")[0], "2022年基数", "", value, "", cityName, "云南省")), dataStyle); } @@ -111,16 +116,24 @@ public class C2 { 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); + String q = r.get(k + 1); + if (StrKit.isBlank(q)) q = "0"; + double xvalue = Double.parseDouble(q); + String value = String.format("%.2f", xvalue); + ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst().split("\\.")[0], "", areaName, "", + value, 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); + String q = r.get(k + 1); + if (StrKit.isBlank(q)) q = "0"; + double xvalue = Double.parseDouble(q); + String value = String.format("%.2f", xvalue); + ExcelKit.putData(outRow, new ArrayList<>(Arrays.asList(r.getFirst().split("\\.")[0], "", areaName, "", + value, cityName, "云南省")), dataStyle); } } } 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 0bcf4c09..5d301bbe 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 @@ -489,7 +489,19 @@ public class ExcelKit { data = ExcelKit.readExcelToList(ExcelKit.excelPath, skipRows); System.out.println("二次获取数据条目数量:" + data.size() + ",期望数量=" + expectLimit); + //处理数据data + //第一行认为是标准长度,从后往前找,发现长度小于第一行长度的就remove掉 + int firstRowLength = data.getFirst().size(); + System.out.println("第一行长度:" + firstRowLength); + for (int i = data.size() - 1; i >= 0; i--) { + List rowData = data.get(i); + if (rowData.size() < firstRowLength) { + data.remove(i); + } + } + } else { + System.out.println("期望数量>=" + expectLimit + ",现在有" + totalRow + "条,理解为数据读取正确,直接返回POI获取的数据列表..."); } System.out.println("=========================================================================================================="); diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Test/C2.java b/src/main/java/com/dsideal/base/Tools/FillData/Test/C2.java new file mode 100644 index 00000000..3ff9626d --- /dev/null +++ b/src/main/java/com/dsideal/base/Tools/FillData/Test/C2.java @@ -0,0 +1,54 @@ +package com.dsideal.base.Tools.FillData.Test; + +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.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 java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class C2 { + + + public static void main(String[] args) throws IOException, InvalidFormatException, InterruptedException { + //初始化数据库连接 + LocalMysqlConnectUtil.Init(); + //实例化 + ReadDocxUtil ru = new ReadDocxUtil(); + + + //处理这个目录 + //判断file是不是目录,是目录的需要跳过 + //城市名称 + File file = new File("D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510\\昭通市人口变化及其对教育的影响20240416.docx"); + String cityName = ru.getCityOrAreaName(file.getName()); + String fileName = file.getName(); + + //判断是否为docx文件 + if (fileName.endsWith(".docx") && !fileName.startsWith("~")) { + System.out.println("正在处理" + cityName + "市州文件..."); + //读取文件 + + //1号模板,数据在图表6和29中 + int secondChartNumber = 29; + List> source2 = ExcelKit.getChartData(file.getAbsolutePath(), secondChartNumber - 1, 1, 10); + + for (int i = 0; i < source2.size(); i++) { + System.out.println(source2.get(i).size()); + for (int j = 0; j < source2.get(i).size(); j++) { + System.out.print(source2.get(i).get(j) + "\t"); + } + System.out.println(); + } + } + } +}