在多个Excel文件中进行搜索
需求说明
公司里有N多个历年的客户缴费数据Excel表格,现在要做一个从“姓名、电话、备注”字段中查找包含特定内容的Excel表的一个功能,输出文件的名字以及找到的内容所在的表格中的位置(哪个Sheet、哪个单元格)
思路
- 先从人的基本操作来分析: 打开一个Excel表格,然后从第一个页签里面的表格开始遍历,遍历到格。 然后在继续下一个Excel表格,找到符合要求的就输出文件名字 和所在表格的位置
- 1.找到文件夹下所有的xls、xlsx的文件
- 2.打开文件,开始遍历,遍历到符合要求的就输出
- 3.直到所有文件都过了一遍
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| String[] xlsxFiles = IOHelpers.getFilesRecursively("D:/JavaTest1/ExcelTest2", "xlsx"); String name ="任宗鑫"; for (String xlsxfile:xlsxFiles) { Workbook workbook = ExcelHelpers.openFile(xlsxfile); String fileName = IOHelpers.getFileName(xlsxfile); for (int sheetIndex=0;sheetIndex<workbook.getNumberOfSheets();sheetIndex++) { Sheet sheet = workbook.getSheetAt(sheetIndex); for (int rowIndex = sheet.getFirstRowNum();rowIndex<=sheet.getLastRowNum();rowIndex++) { Row row = sheet.getRow(rowIndex); if (row==null) { continue; } for (int cellIndex = row.getFirstCellNum(); cellIndex<=row.getLastCellNum();cellIndex++) {
Cell cell = row.getCell(cellIndex); if (cell==null) { continue; } String value= ExcelHelpers.getCellStringValue(cell); if (value==null) { continue; } if (value.contains(name)) { CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex()); System.out.println("文件名称为: " + fileName + "; 搜索的内容所在位置为:" + " 页签: " + sheet.getSheetName() + " 行: "+ (rowIndex + 1) + " 格:" + cellRef.formatAsString()); } } }
} ExcelHelpers.close(workbook); }
|