如何在 excel sheet 从该行中找到特定字符串后打印整行?
How to print the whole row of an excel sheet after finding a specific string from that row?
这是我用来在 excel sheet.
中查找特定字符串的代码
FileInputStream fis = new FileInputStream(new File("D:\excel_file.xlsx"));
workbook = new XSSFWorkbook(fis);
for(int i = 0; i < workbook.getNumberOfSheets(); i++) {
XSSFSheet spreadsheet = workbook.getSheetAt(i);
Iterator<Row> rowIterator = spreadsheet.iterator();
while (rowIterator.hasNext()) {
row = (XSSFRow) rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
String test_string = "search_phrase";
if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
if (test_string.trim().equalsIgnoreCase(cell.getStringCellValue().trim())) {
flag = 1;
rowNum = row.getRowNum();
System.out.println("found");
}
}
}
fis.close();
workbook.close();
}
}
if(flag==0) {
System.out.println("not found");
}
我也可以轻松获取行号。
但是使用该行号我无法弄清楚如何获取该行中的所有单元格。
无需查找行号。如果满足条件并且您有 row
那么您可以使用以下内容代替 Flag=1;
Iterator<Cell> cellItr = row.iterator();
while(cellItr.hasNext()){
System.out.println(cellItr.next().toString());
}
不过我假设单元格中的数据类型是字符串。如果没有,你需要管理cell数据类型和missingCellPolicy来完善。
这是我用来在 excel sheet.
中查找特定字符串的代码FileInputStream fis = new FileInputStream(new File("D:\excel_file.xlsx"));
workbook = new XSSFWorkbook(fis);
for(int i = 0; i < workbook.getNumberOfSheets(); i++) {
XSSFSheet spreadsheet = workbook.getSheetAt(i);
Iterator<Row> rowIterator = spreadsheet.iterator();
while (rowIterator.hasNext()) {
row = (XSSFRow) rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
String test_string = "search_phrase";
if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
if (test_string.trim().equalsIgnoreCase(cell.getStringCellValue().trim())) {
flag = 1;
rowNum = row.getRowNum();
System.out.println("found");
}
}
}
fis.close();
workbook.close();
}
}
if(flag==0) {
System.out.println("not found");
}
我也可以轻松获取行号。
但是使用该行号我无法弄清楚如何获取该行中的所有单元格。
无需查找行号。如果满足条件并且您有 row
那么您可以使用以下内容代替 Flag=1;
Iterator<Cell> cellItr = row.iterator();
while(cellItr.hasNext()){
System.out.println(cellItr.next().toString());
}
不过我假设单元格中的数据类型是字符串。如果没有,你需要管理cell数据类型和missingCellPolicy来完善。