From a2e096826649399fe14ee9ec7d26bb968dfb70df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Wed, 20 Nov 2024 15:38:10 +0800 Subject: [PATCH] 'commit' --- .../dsideal/base/Tools/Test/ConvertExcel.java | 149 ------------------ .../dsideal/base/Tools/Test/ExportExcel.java | 67 -------- .../dsideal/base/Tools/Test/TestBadExcel.java | 66 -------- .../com/dsideal/base/Tools/Test/TestC2.java | 43 ----- .../base/Tools/Test/TestCallPython.java | 23 --- .../dsideal/base/Tools/Test/TestCityArea.java | 27 ---- .../dsideal/base/Tools/Test/TestMulti.java | 49 ------ .../com/dsideal/base/Tools/Test/TestRead.java | 35 ---- .../com/dsideal/base/Tools/Test/TestXml.java | 25 --- 9 files changed, 484 deletions(-) delete mode 100644 src/main/java/com/dsideal/base/Tools/Test/ConvertExcel.java delete mode 100644 src/main/java/com/dsideal/base/Tools/Test/ExportExcel.java delete mode 100644 src/main/java/com/dsideal/base/Tools/Test/TestBadExcel.java delete mode 100644 src/main/java/com/dsideal/base/Tools/Test/TestC2.java delete mode 100644 src/main/java/com/dsideal/base/Tools/Test/TestCallPython.java delete mode 100644 src/main/java/com/dsideal/base/Tools/Test/TestCityArea.java delete mode 100644 src/main/java/com/dsideal/base/Tools/Test/TestMulti.java delete mode 100644 src/main/java/com/dsideal/base/Tools/Test/TestRead.java delete mode 100644 src/main/java/com/dsideal/base/Tools/Test/TestXml.java diff --git a/src/main/java/com/dsideal/base/Tools/Test/ConvertExcel.java b/src/main/java/com/dsideal/base/Tools/Test/ConvertExcel.java deleted file mode 100644 index 921114c2..00000000 --- a/src/main/java/com/dsideal/base/Tools/Test/ConvertExcel.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.dsideal.base.Tools.Test; - -import cn.hutool.poi.excel.ExcelReader; -import cn.hutool.poi.excel.ExcelUtil; -import cn.hutool.poi.excel.ExcelWriter; - -import java.io.File; -import java.io.IOException; -import java.util.*; - -public class ConvertExcel { - // 获取系统的临时文件目录 - private static final String tempDir = System.getProperty("java.io.tmpdir"); - - public static void main(String[] args) throws IOException { - String source = "D:\\dsWork\\dsProject\\dsBase\\src\\main\\java\\com\\dsideal\\base\\Tools\\Sample.xlsx"; - File file = new File(source); - //哪些列是固定不动的,比如此处是第0列与第1列是不动的,就是年份+学段 - List fixedColumns = new ArrayList<>(); - fixedColumns.add(0); - fixedColumns.add(1); - - //每列的列号与列名对应关系 - String[] colNames = new String[1024]; - int cl = 0; - - // 读取Excel数据 - ExcelReader reader = ExcelUtil.getReader(file); - // 创建临时文件,文件名具有随机UUID,扩展名为.xlsx - - //利用uuid生成一个临时文件名 - String uuidFileName = UUID.randomUUID().toString().toUpperCase() + ".xlsx"; - String output = tempDir + uuidFileName; - // 创建一个ExcelWriter对象,初始化时会创建一个空的Excel文件 - ExcelWriter writer = ExcelUtil.getWriter(output); - //表头 - List> read = reader.read(0, 0);//第0行是表头 - for (int i = 0; i < reader.getColumnCount(); i++) { - colNames[cl++] = read.getFirst().get(i).toString(); - } - - //数据 - List> data = reader.read(1, reader.getRowCount());//从第1行读取到最后一行 - for (List row : data) { - //拆分每一行的数据 - for (int i = 0; i < reader.getColumnCount(); i++) { - if (!fixedColumns.contains(i)) {//非fixedColumns列进行枚举 - - List rowData = new ArrayList<>(); - //输出固定列的名称和值 - for (int cNum : fixedColumns) { - String value = row.get(cNum).toString();//列值 - rowData.add(value); - } - String cName = colNames[i];//列名 - String value = row.get(i).toString(); - rowData.add(cName); - rowData.add(value); - writer.writeRow(rowData); - } - } - } - writer.flush(); - writer.close(); - reader.close(); - - /***************************************************************************************/ - //上面的代码没动过,下面是新写的 - reader = ExcelUtil.getReader(output); - //前面固定的 - List header = new ArrayList<>(); - header.add("年份"); - header.add("学段"); - header.add("区域分类"); - header.add("总量分类"); - header.add("区域数值"); - header.add("总量数值"); - - // 写入表头 - uuidFileName = UUID.randomUUID().toString().toUpperCase() + ".xlsx"; - output = tempDir + uuidFileName; - writer = ExcelUtil.getWriter(output); - writer.writeHeadRow(header); - - //还需要继续扩展EXCEL模板,实现数据转换 - Set setArea = new HashSet<>(); - setArea.add("城区"); - setArea.add("镇区"); - setArea.add("乡村"); - - List> res = new ArrayList<>(); - data = reader.read(1, reader.getRowCount());//从第1行读取到最后一行 - for (List row : data) { - List rowData = new ArrayList<>(); - //输出固定列的名称和值 - rowData.add(row.get(0).toString());//年度 - rowData.add(row.get(1).toString());//学段 - - if (setArea.contains(row.get(2).toString())) {//如果是城区、镇区、乡村 - rowData.add(row.get(2).toString()); - rowData.add(""); - rowData.add(row.get(3).toString()); - rowData.add(""); - } else { - rowData.add(""); - rowData.add(row.get(2).toString()); - rowData.add(""); - rowData.add(row.get(3).toString()); - } - res.add(rowData); - } - - // 排序 - Collections.sort(res, new Comparator>() { - @Override - public int compare(List o1, List o2) { - // 先比较年份 -// int yearCompare = o1.get(0).compareTo(o2.get(0)); -// if (yearCompare != 0) { -// return yearCompare; -// } - - // 年份相同,比较学段 - int stageCompare = o1.get(1).compareTo(o2.get(1)); - if (stageCompare != 0) { - return stageCompare; - } - - // 学段相同,比较区域分类 - int areaCompare = o1.get(2).compareTo(o2.get(2)); - if (areaCompare != 0) { - return areaCompare; - } - - // 区域分类相同,比较总量分类 - return o1.get(3).compareTo(o2.get(3)); - } - }); - for (List re : res) { - writer.writeRow(re); - } - - reader.close(); - writer.flush(); - writer.close(); - //打开文件所在目录,并聚焦文件 - Runtime.getRuntime().exec("explorer.exe /e,/select," + output); - } -} diff --git a/src/main/java/com/dsideal/base/Tools/Test/ExportExcel.java b/src/main/java/com/dsideal/base/Tools/Test/ExportExcel.java deleted file mode 100644 index 0679517b..00000000 --- a/src/main/java/com/dsideal/base/Tools/Test/ExportExcel.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.dsideal.base.Tools.Test; - -import com.dsideal.base.DataEase.Model.DataEaseModel; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; -import com.jcraft.jsch.JSchException; - -import java.io.File; -import java.io.IOException; -import java.util.List; - -import com.jfinal.plugin.activerecord.Record; - -public class ExportExcel { - public static DataEaseModel dm = new DataEaseModel(); - - public static void main(String[] args) throws IOException, JSchException { - LocalMysqlConnectUtil.Init(); - - //Excel的保存目录 - String exportPath = "D:/360Downloads/Excel"; - File directory = new File(exportPath); - // 检查目录是否存在 - if (!directory.exists()) { - directory.mkdirs(); - } - String privinceName = "云南省"; - //一、导出省的数据集 - System.out.println("正在处理省数据集..."); - List list = dm.getDataSetByIdentityId(1,null); - System.out.println("数据集个数=" + list.size()); - for (Record record : list) { - String tableName = record.getStr("table_name"); - String dataSetName = record.getStr("dataset_name"); - System.out.println("正在处理数据集:" + dataSetName); - dm.exportExcel(1, tableName, exportPath, privinceName); - } - //二、导出市的数据集 - System.out.println("正在处理市数据集..."); - String city_name = "昆明市"; - list = dm.getDataSetByIdentityId(2,null); - System.out.println("数据集个数=" + list.size()); - for (Record record : list) { - String tableName = record.getStr("table_name"); - String dataSetName = record.getStr("dataset_name").replace("\\", "").replace("/", ""); - System.out.println("正在处理数据集:" + dataSetName); - - Record cityRecord = dm.getAreaByName(city_name); - String cityName = cityRecord.getStr("area_name"); - dm.exportExcel(2, tableName, exportPath, cityName); - } - //三、导出县区的数据集 - System.out.println("正在处理县区数据集..."); - String area_name = "寻甸县"; - list = dm.getDataSetByIdentityId(3,null); - System.out.println("数据集个数=" + list.size()); - for (Record record : list) { - String tableName = record.getStr("table_name"); - String dataSetName = record.getStr("dataset_name").replace("\\", "").replace("/", ""); - System.out.println("正在处理数据集:" + dataSetName); - - Record areaRecord = dm.getAreaByName(area_name); - String areaName = areaRecord.getStr("area_name"); - dm.exportExcel(3, tableName, exportPath, areaName); - } - System.out.println("导出完成!"); - } -} diff --git a/src/main/java/com/dsideal/base/Tools/Test/TestBadExcel.java b/src/main/java/com/dsideal/base/Tools/Test/TestBadExcel.java deleted file mode 100644 index becdaa67..00000000 --- a/src/main/java/com/dsideal/base/Tools/Test/TestBadExcel.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.dsideal.base.Tools.Test; - -import cn.hutool.core.io.FileUtil; -import com.dsideal.base.DataEase.Model.DataEaseModel; -import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; -import org.apache.poi.openxml4j.exceptions.InvalidFormatException; -import org.apache.poi.openxml4j.util.ZipSecureFile; -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.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(); - //实例化 - - - - //找到parentPath下一级目录中所有文件 - List files = FileUtil.loopFiles(parentPath, file -> true); - int rowIndex = 0; - //处理这个目录 - if (files != null) { - for (File file : files) { - //判断file是不是目录,是目录的需要跳过 - if (file.isDirectory()) continue; - //城市名称 - DataEaseModel dm=new DataEaseModel(); - String cityName = dm.getCityName(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(); - } - } - } - } -} diff --git a/src/main/java/com/dsideal/base/Tools/Test/TestC2.java b/src/main/java/com/dsideal/base/Tools/Test/TestC2.java deleted file mode 100644 index 0903c5cc..00000000 --- a/src/main/java/com/dsideal/base/Tools/Test/TestC2.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dsideal.base.Tools.Test; - -import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit; -import org.apache.poi.openxml4j.exceptions.InvalidFormatException; -import org.apache.poi.openxml4j.util.ZipSecureFile; -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.List; - -public class TestC2 { - - - public static void main(String[] args) throws IOException, InvalidFormatException, InterruptedException { - - //处理这个目录 - //判断file是不是目录,是目录的需要跳过 - //城市名称 - File file = new File("D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510\\昭通市人口变化及其对教育的影响20240416.docx"); - String fileName = file.getAbsolutePath(); - - - InputStream is = new FileInputStream(fileName); - ZipSecureFile.setMinInflateRatio(-1.0d); - XWPFDocument doc = new XWPFDocument(is); - //排序后的图表 - List charts = ExcelKit.getSortListForXWPFChart(doc.getCharts()); - - System.out.println("图表个数=" + charts.size()); - //第34个图表读取不出来 - XSSFWorkbook workbook = charts.get(33).getWorkbook(); - System.out.println("正在读取第34个图表数据..."); - List> data = ExcelKit.readSheet(workbook, 2); - System.out.println("数据条数=" + data.size()); - is.close(); - ExcelKit.printTable(data); - } -} diff --git a/src/main/java/com/dsideal/base/Tools/Test/TestCallPython.java b/src/main/java/com/dsideal/base/Tools/Test/TestCallPython.java deleted file mode 100644 index b45c349b..00000000 --- a/src/main/java/com/dsideal/base/Tools/Test/TestCallPython.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.dsideal.base.Tools.Test; - -import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit; - -import java.io.*; -import java.util.List; - -public class TestCallPython { - - - public static void main(String[] args) throws InterruptedException, IOException { - //哪个word文档 - String docPath = "D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510\\丽江市人口变化及其对教育的影响20240418.docx"; - //第几个图表 - int tuBiaoNum = 1; - //Excel文件生成位置 - String excelPath = "c:/task.xlsx"; - - //读取生成的EXCEL,使用POI就可以了 - List> sheetList = ExcelKit.readSheet(excelPath, 1); - System.out.println(sheetList); - } -} diff --git a/src/main/java/com/dsideal/base/Tools/Test/TestCityArea.java b/src/main/java/com/dsideal/base/Tools/Test/TestCityArea.java deleted file mode 100644 index 801678ca..00000000 --- a/src/main/java/com/dsideal/base/Tools/Test/TestCityArea.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dsideal.base.Tools.Test; - -import com.dsideal.base.DataEase.Model.DataEaseModel; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; -import com.jfinal.plugin.activerecord.Db; -import com.jfinal.plugin.activerecord.Record; - -import java.util.List; - -public class TestCityArea { - public static void main(String[] args) throws Exception { - LocalMysqlConnectUtil.Init(); - //实例化 - DataEaseModel dm=new DataEaseModel(); - List list = dm.getCityNameList(); - for (String s : list) { - String sql = "select id from t_dm_area where area_name=?"; - String area_id = Db.queryStr(sql, s); - sql = "select * from t_dm_area where parent_id=?"; - List records = Db.find(sql, area_id); - for (Record record : records) { - String area_name = record.getStr("area_name"); - System.out.println(s+" "+area_name); - } - } - } -} diff --git a/src/main/java/com/dsideal/base/Tools/Test/TestMulti.java b/src/main/java/com/dsideal/base/Tools/Test/TestMulti.java deleted file mode 100644 index 79b8416c..00000000 --- a/src/main/java/com/dsideal/base/Tools/Test/TestMulti.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.dsideal.base.Tools.Test; - -import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit; -import org.apache.poi.openxml4j.exceptions.InvalidFormatException; -import org.apache.poi.openxml4j.util.ZipSecureFile; -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.List; - -public class TestMulti { - - public static void main(String[] args) throws IOException, InvalidFormatException, InterruptedException { - String path = "D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510"; - //获取此目录下所有的文件,需要以docx结尾,并且,不能以~开头 - File file = new File(path); - File[] files = file.listFiles(); - for (File f : files) { - if (f.getName().endsWith(".docx") && !f.getName().startsWith("~")) { - String sourceWord = f.getAbsolutePath(); - InputStream is = new FileInputStream(sourceWord); - ZipSecureFile.setMinInflateRatio(-1.0d); - XWPFDocument doc = new XWPFDocument(is); - //直接输出图表数量 - //System.out.println("doc.getCharts=" + doc.getCharts().size()); - List chartList = doc.getCharts(); - //排序后的图表 - chartList = ExcelKit.getSortListForXWPFChart(chartList); - //遍历输出 - for (int i = 0; i < chartList.size(); i++) { - XWPFChart chart = chartList.get(i); - XSSFWorkbook workbook = chart.getWorkbook(); - XSSFSheet sheet = workbook.getSheetAt(0); - if (sheet.getPhysicalNumberOfRows() == 0) { - System.out.println(sourceWord + ",第" + (i + 1) + "个图表需要人工编辑一下Sheet名称,否则无法读取!==="); - } - } - //关闭流 - is.close(); - } - } - } -} diff --git a/src/main/java/com/dsideal/base/Tools/Test/TestRead.java b/src/main/java/com/dsideal/base/Tools/Test/TestRead.java deleted file mode 100644 index 331fa343..00000000 --- a/src/main/java/com/dsideal/base/Tools/Test/TestRead.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.dsideal.base.Tools.Test; - -import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; - -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -public class TestRead { - - public static void main(String[] args) throws IOException { - //待读取的EXCEL文件 - String filePath = "C:\\Users\\Administrator\\全省及州市县区人口与教育报告集20241023\\全省及州市县区人口与教育报告集20241023\\133个县区报告2022\\县区研究报告\\文山州各县市报告8\\马关县\\马关县教育发展规模数据收集表-20240418.xlsx"; - //表格正文上方的文字 - String keyword = "自动计算招生数、在校生数"; - - //遍历每个Sheet - for (int k = 0; k < 4; k++) { - //为什么headRows=2?答:因为有一行是关键字,下一行是表头,共2行 - //letterIndex=K,表示第二个表格最后一列是字母K - List> dataList = ExcelKit.readSecondTable(filePath, k, keyword, 2, "K"); - //输出数据 - for (int i = 0; i < dataList.size(); i++) { - for (int j = 0; j < dataList.get(i).size(); j++) { - System.out.print(dataList.get(i).get(j) + " "); - } - System.out.println(); - } - } - - } -} \ No newline at end of file diff --git a/src/main/java/com/dsideal/base/Tools/Test/TestXml.java b/src/main/java/com/dsideal/base/Tools/Test/TestXml.java deleted file mode 100644 index 4bddb25c..00000000 --- a/src/main/java/com/dsideal/base/Tools/Test/TestXml.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.dsideal.base.Tools.Test; - -import com.dsideal.base.Tools.FillData.ExcelKit.ExcelKit; -import org.apache.poi.openxml4j.exceptions.InvalidFormatException; -import org.dom4j.DocumentException; - -import java.io.IOException; -import java.util.*; - -public class TestXml { - - - public static void main(String[] args) throws DocumentException, IOException, InterruptedException, InvalidFormatException { - String sourceDoc = "c:/西双版纳州人口变化及其对教育的影响20240420.docx"; - List> res = ExcelKit.getChartData(sourceDoc, 1,0); - ExcelKit.printTable(res); -// for (int chartNumber = 1; chartNumber <= 37; chartNumber++) { -// String xml = ExcelKit.DocxUnzipDirectory + "word\\charts\\chart" + chartNumber + ".xml"; -// List> res = ExcelKit.getChartDataByXml(xml); -// //输出转置后的数据 -// System.out.println("正在输出第" + chartNumber + "个图表的数据"); -// ExcelKit.printTable(res); -// } - } -} \ No newline at end of file