main
黄海 8 months ago
parent 3b796572b8
commit bd77d81b6b

@ -478,33 +478,8 @@ public class ExcelKit {
//如果达到目标预期的数量就直接返回poi获取的数据列表
int totalRow = data.size() + skipRowCount;
if (totalRow < expectLimit) {
System.out.println("期望数量>=" + expectLimit + ",现在只有" + totalRow + "条理解为POI读取WORD图表存在问题使用Python进行二次获取数据...");
// 留出足够的com关闭word的时间长度否则会有异常
Thread.sleep(3000);
//否则调用python+com进行再次获取数据列表这次获取的可能才是对的
//写入交互文本文件
ExcelKit.callPythonPrepare(docPath, chartNumber);
//对图表进行读取
ExcelKit.callPythonRead();
//读取生成的EXCEL,使用POI就可以了
//使用POI
int skipRows = 1; // 假设我们要跳过第一行
data = ExcelKit.readExcelToList(ExcelKit.excelPath, skipRows);
System.out.println("二次获取数据条目数量:" + data.size() + ",期望数量=" + expectLimit);
//处理数据data
//第一行认为是标准长度从后往前找发现长度小于第一行长度的就remove掉
if(data.isEmpty()) return data;
int firstRowLength = data.getFirst().size();
System.out.println("第一行长度:" + firstRowLength);
for (int i = data.size() - 1; i >= 0; i--) {
List<String> rowData = data.get(i);
if (rowData.size() < firstRowLength) {
data.remove(i);
}
}
} else {
System.out.println("期望数量>=" + expectLimit + ",现在有" + totalRow + "条理解为数据读取正确直接返回POI获取的数据列表...");
System.out.println("怎么能小于预期目标:" + expectLimit + "呢,请人为检查!");
System.exit(0);
}
return data;
}
@ -543,7 +518,7 @@ public class ExcelKit {
List<List<String>> dataList = new ArrayList<>();
FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis);
if(sheetIndex >= workbook.getNumberOfSheets()){
if (sheetIndex >= workbook.getNumberOfSheets()) {
return dataList;
}
Sheet sheet = workbook.getSheetAt(sheetIndex);
@ -594,7 +569,7 @@ public class ExcelKit {
List<String> rowData = dataList.get(i);
if (rowData.isEmpty()) {
dataList.remove(i);
}else if(rowData.getFirst()==null || !rowData.getFirst().matches("[0-9]+")){
} else if (rowData.getFirst() == null || !rowData.getFirst().matches("[0-9]+")) {
dataList.remove(i);
}
}

@ -0,0 +1,35 @@
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 C11 {
public static void main(String[] args) throws IOException, InvalidFormatException, InterruptedException {
//初始化数据库连接
LocalMysqlConnectUtil.Init();
File file=new File("D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510\\昭通市人口变化及其对教育的影响20240416.docx");
//数据在图表36教职工总量
int firstChartNumber = 36, secondChartNumber = 37;
//占地面积37
List<List<String>> source1 = ExcelKit.getChartData(file.getAbsolutePath(), firstChartNumber - 1, 1, 10);
ExcelKit.printTable(source1);
}
}
Loading…
Cancel
Save