main
黄海 8 months ago
parent c8fadc38e8
commit 73054a5932

@ -46,12 +46,14 @@ public class C9 {
List<XWPFChart> charts = ExcelKit.getSortListForXWPFChart(doc.getCharts());
XSSFWorkbook workbook = charts.get(chartNumber).getWorkbook();
List<List<String>> data = ExcelKit.readSheet(workbook, skipRowCount);
workbook.close();
is.close();
//如果达到目标预期的数量就直接返回poi获取的数据列表
int totalRow = data.size() + skipRowCount;
if (totalRow < expectLimit) {
System.out.println("数据不足,重新获取数据,现正在使用python_docx进行二次获取数据...");
System.out.println("期望数量>=" + expectLimit + ",现在只有" + totalRow + "条理解为POI读取WORD图表存在问题使用python进行二次获取数据...");
// 留出足够的com关闭word的时间长度否则会有异常
Thread.sleep(3000);
//否则调用python+com进行再次获取数据列表这次获取的可能才是对的
//写入交互文本文件
ExcelKit.callPythonPrepare(docPath, chartNumber);
@ -59,6 +61,7 @@ public class C9 {
ExcelKit.callPythonRead();
//读取生成的EXCEL,使用POI就可以了
data = ExcelKit.readSheet(ExcelKit.excelPath, skipRowCount);
System.out.println("二次获取数据条目数量:" + data.size() + ",期望数量=" + expectLimit);
}
return data;
}

@ -150,7 +150,6 @@ public class ExcelKit {
// 遍历工作表中的所有行
if (sheet == null) return array;
System.out.println("Sheet rows=" + sheet.getPhysicalNumberOfRows());
for (Row row : sheet) {
rowIndex++;
if (rowIndex <= skipRowCount) continue;//跳过指定的行数
@ -170,6 +169,7 @@ public class ExcelKit {
}
array.add(X);
}
workbook.close();
return array;
}

@ -11,7 +11,7 @@ public class TestCallPython {
public static void main(String[] args) throws InterruptedException, IOException {
//哪个word文档
String docPath = "D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510\\红河哈尼族彝族自治州人口变化及其对教育的影响20240419.docx";
String docPath = "D:\\dsWork\\YunNanDsBase\\Doc\\全省及州市县区人口与教育报告集20241023\\16个州市报告2022\\分析报告20240510\\丽江市人口变化及其对教育的影响20240418.docx";
//第几个图表
int tuBiaoNum = 1;
//Excel文件生成位置

Loading…
Cancel
Save