From 0720752da26a3d501d907bfd1c9f25f030e9a0cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Wed, 13 Nov 2024 07:53:03 +0800 Subject: [PATCH] 'commit' --- ...化及其对教育的影响20240419.docx | Bin 0 -> 162 bytes .../教育资源配置发展预测(人).xlsx | Bin 11708 -> 11708 bytes ...配置发展预测(人)【成果】.xlsx | Bin 37020 -> 0 bytes .../总人口变化及预测-双.xlsx | Bin 8973 -> 8973 bytes ...人口变化及预测-双【成果】.xlsx | Bin 7113 -> 0 bytes Py/TuBiao.py | 4 +- .../dsideal/base/Tools/FillData/City/C9.java | 57 ++++++++++---- .../Tools/FillData/ExcelKit/ExcelKit.java | 17 +++-- .../Tools/FillData/Test/TestBadExcel.java | 71 ++++++++++++++++++ 9 files changed, 125 insertions(+), 24 deletions(-) create mode 100644 Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/~$市人口变化及其对教育的影响20240419.docx delete mode 100644 Doc/待处理/市/【11】教育资源配置发展预测/教育资源配置发展预测(人)【成果】.xlsx delete mode 100644 Doc/待处理/市/【9】总人口变化及预测-双/总人口变化及预测-双【成果】.xlsx create mode 100644 src/main/java/com/dsideal/base/Tools/FillData/Test/TestBadExcel.java diff --git a/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/~$市人口变化及其对教育的影响20240419.docx b/Doc/全省及州市县区人口与教育报告集20241023/16个州市报告2022/分析报告20240510/~$市人口变化及其对教育的影响20240419.docx new file mode 100644 index 0000000000000000000000000000000000000000..5988520c8aacde1da98295a8f4e472deb45cab85 GIT binary patch literal 162 zcmd;eOv%m6%PcM_N-W7QVjvRmGB`4%Fyu01GUNeqF+&MM5kn%7%m>oQfCFzhiQnQSbt9wzUHTgR0WuSFxtI8DV<(q@6$gs%Kyjg$V#@04C%Y;{X5v literal 0 HcmV?d00001 diff --git a/Doc/待处理/市/【11】教育资源配置发展预测/教育资源配置发展预测(人).xlsx b/Doc/待处理/市/【11】教育资源配置发展预测/教育资源配置发展预测(人).xlsx index 58266e80c763f285c1e82d07c1bbd6d4c90d2b61..08ce71f4a070983bd53d1f213aec8cfc9c89e978 100644 GIT binary patch delta 177 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�jGvB1M!gVb6PtiBs#!R@0=+YCi@gl*|zqe>Ta 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 diff --git a/Doc/待处理/市/【9】总人口变化及预测-双/总人口变化及预测-双.xlsx b/Doc/待处理/市/【9】总人口变化及预测-双/总人口变化及预测-双.xlsx index 2478595b715d6399cc052587b6fc43cc4d3034e5..efff7f65588b38361f14c9dbf8c7634556a20ed8 100644 GIT binary patch delta 200 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 getChartData(String docPath, int chartNumber, int skipRowCount, int expectLimit) throws IOException, InvalidFormatException, InterruptedException { + InputStream is = new FileInputStream(docPath); + ZipSecureFile.setMinInflateRatio(-1.0d); + XWPFDocument doc = new XWPFDocument(is); + //排序后的图表 + List charts = ExcelKit.getSortListForXWPFChart(doc.getCharts()); + XSSFWorkbook workbook = charts.get(chartNumber).getWorkbook(); + List> data = ExcelKit.readSheet(workbook, skipRowCount); + workbook.close(); + + //如果达到目标预期的数量,就直接返回poi获取的数据列表 + if (data.size() < expectLimit) { + System.out.println("数据不足,重新获取数据,现正在使用python_docx进行二次获取数据..."); + //否则调用python+com进行再次获取数据列表,这次获取的可能才是对的 + //写入交互文本文件 + ExcelKit.callPythonPrepare(docPath, chartNumber); + //对图表进行读取 + ExcelKit.callPythonRead(); + //读取生成的EXCEL,使用POI就可以了 + data = ExcelKit.readSheet(ExcelKit.excelPath, skipRowCount); + } + return data; + } + + public static void main(String[] args) throws IOException, InvalidFormatException, InterruptedException { //初始化数据库连接 LocalMysqlConnectUtil.Init(); //实例化 @@ -65,25 +99,16 @@ public class C9 { 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 int firstChartNumber = 1; + List> source1 = getChartData(file.getAbsolutePath(), firstChartNumber, 6,20);//2017年开始 - XSSFWorkbook workbook = charts.get(firstChartNumber).getWorkbook(); -// if(cityName.contains("丽江")){ -// System.out.println("丽江"); -// } - List> source1 = ExcelKit.readSheet(workbook, 6);//从2017年开始 - - System.out.println(source1); - - + if (cityName.contains("丽江")) { + System.out.println("丽江"); + System.out.println(source1); + } //遍历source1 for (List r : source1) { 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 0addd728..b914cf39 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 @@ -16,6 +16,13 @@ import java.util.List; public class ExcelKit { + //与python交互使用的excel文件路径 + public static String excelPath = "c:/task.xlsx"; + //执行的python路径,这里我使用的是anaconda3的python,路径自行修改,注意要在这个环境中pip安装了python-docx,否则会报错 + public static String python = "D:\\anaconda3\\envs\\py310\\python.exe"; + //python脚本路径 + public static String py = "D:\\dsWork\\YunNanDsBase\\Py\\TuBiao.py"; + /** * 将xls转换为xlsx * @@ -143,7 +150,7 @@ public class ExcelKit { // 遍历工作表中的所有行 if (sheet == null) return array; - System.out.println("Sheet rows="+sheet.getPhysicalNumberOfRows()); + System.out.println("Sheet rows=" + sheet.getPhysicalNumberOfRows()); for (Row row : sheet) { rowIndex++; if (rowIndex <= skipRowCount) continue;//跳过指定的行数 @@ -163,7 +170,6 @@ public class ExcelKit { } array.add(X); } - workbook.close(); return array; } @@ -333,6 +339,7 @@ public class ExcelKit { } return --rlt; } + /** * 调用python+com读取WORD中的图表 * @@ -340,9 +347,9 @@ public class ExcelKit { * @throws InterruptedException */ public static void callPythonRead() throws IOException, InterruptedException { + + ExcelKit.delExcel(excelPath); // 创建ProcessBuilder对象,并设置Python脚本的路径 - String python = "D:\\anaconda3\\envs\\py310\\python.exe"; - String py = "D:\\dsWork\\YunNanDsBase\\Py\\TuBiao.py"; ProcessBuilder processBuilder = new ProcessBuilder(python, py); // 重定向错误流到标准输出,这样可以在Java中捕获所有的输出 processBuilder.redirectErrorStream(true); @@ -358,7 +365,7 @@ public class ExcelKit { process.waitFor(); } - public static void callPythonPrepare(String docPath,int tuBiaoNum) throws IOException { + public static void callPythonPrepare(String docPath, int tuBiaoNum) throws IOException { String taskTxt = "c:/task.txt"; //如果文件存在则删除 if (new File(taskTxt).exists()) { diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Test/TestBadExcel.java b/src/main/java/com/dsideal/base/Tools/FillData/Test/TestBadExcel.java new file mode 100644 index 00000000..dbaf102b --- /dev/null +++ b/src/main/java/com/dsideal/base/Tools/FillData/Test/TestBadExcel.java @@ -0,0 +1,71 @@ +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.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 TestBadExcel { + //开始读取市州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(); + + + //找到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()); + + //数据在图表36,教职工总量 + int firstChartNumber = 36; + if(cityName.contains("西双版纳州")){ + System.out.println("he"); + } + charts.get(firstChartNumber - 1).getWorkbook(); + } + } + } + } +}