From b782a02faf7edf624b19ce77c6f83855f06876e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Sun, 10 Nov 2024 17:50:28 +0800 Subject: [PATCH] 'commit' --- .../dsideal/base/Tools/Step5_ReaderExcel.java | 53 ++++++++++++------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/dsideal/base/Tools/Step5_ReaderExcel.java b/src/main/java/com/dsideal/base/Tools/Step5_ReaderExcel.java index 7be6d6ff..e939ef50 100644 --- a/src/main/java/com/dsideal/base/Tools/Step5_ReaderExcel.java +++ b/src/main/java/com/dsideal/base/Tools/Step5_ReaderExcel.java @@ -12,29 +12,46 @@ public class Step5_ReaderExcel { FileInputStream fis = new FileInputStream(filePath); Workbook workbook = new XSSFWorkbook(fis); - Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表 - // 创建FormulaEvaluator对象 - FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); + //遍历前4个工作表 + for (int i = 0; i < 4; i++) { + Sheet sheet = workbook.getSheetAt(i); + System.out.println("Sheet Name: " + sheet.getSheetName()); - for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) { - Row row = sheet.getRow(rowIndex); - if (row == null) { - break; + // 创建FormulaEvaluator对象 + FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); + int rowIndex; + for (rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) { + Row row = sheet.getRow(rowIndex); + if (row == null) break; + if (row.getRowNum() == 0) continue; // 跳过标题行, 本项目中有标题行 + // 读取表格数据 + for (Cell cell : row) { + // 如果单元格是公式类型 + if (cell.getCellType() == CellType.FORMULA) { + // 计算公式结果 + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(evaluator.evaluate(cell).getNumberValue()); + } + // 打印单元格数据 + System.out.print(cell + "\t"); + } + System.out.println(); } - if (row.getRowNum() == 0) continue; // 跳过标题行, 本项目中有标题行 - // 读取表格数据 - for (Cell cell : row) { - // 如果单元格是公式类型 - if (cell.getCellType() == CellType.FORMULA) { - // 计算公式结果 - cell.setCellType(CellType.NUMERIC); - cell.setCellValue(evaluator.evaluate(cell).getNumberValue()); + //之所以减1,是因为是在判断为空时才停止,也就是过了真实数据一行后,所以要减1 + System.out.println("第一个表格开始行索引=2,结束行索引=" + (rowIndex - 1)); + + //第二个表格 + //从rowIndex开始,向下面查找,直到第一列中出现文字“自动计算招生数、在校生数”,此行的再下一行就是真正的第二个表格的开始位置 + for (; rowIndex <= sheet.getLastRowNum(); rowIndex++) { + Row row = sheet.getRow(rowIndex); + if (row != null && row.getCell(0) != null && row.getCell(0).toString().contains("自动计算招生数、在校生数")) { + System.out.println("rowIndex=" + rowIndex); + break; } - // 打印单元格数据 - System.out.print(cell + "\t"); } - System.out.println(); + break;//先调试第一个表格 } + workbook.close(); fis.close(); }