如何从 excel 文件中获取特定的单元格值

How can I get a specific cell value from an excel file

我想寻求一点帮助!

我有一个简单的 xlsx 文件,我想通过指定其唯一 ID(在本例中为用户名)来获取特定单元格的值。例如,如何获取 user_2 的年龄值?

xlsx file content:

这是我使用的代码:

package test;

import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Test {
    
     public void XlsxRead_2() {
           getvalue_1();
       }
     
     public static void getvalue_1() {
           XSSFRow row;
           XSSFCell cell;
           String[][] value = null;
           try {
               FileInputStream inputStream = new FileInputStream("C:\test.xlsx");
               XSSFWorkbook workbook = new XSSFWorkbook(inputStream);

               // get sheet number
               int sheetCn = workbook.getNumberOfSheets();             

               for (int cn = 0; cn < sheetCn; cn++) {

                   // get 0th sheet data
                   XSSFSheet sheet = workbook.getSheetAt(cn);                  

                   // get number of rows from sheet
                   int rows = sheet.getPhysicalNumberOfRows();

                   // get number of cell from row
                   int cells = sheet.getRow(cn).getPhysicalNumberOfCells();

                   value = new String[rows][cells];

                   for (int r = 0; r < rows; r++) {
                       row = sheet.getRow(r); // bring row
                       if (row != null) {
                           for (int c = 0; c < cells; c++) {
                               cell = row.getCell(c);
                               if (cell != null) {

                                   switch (cell.getCellType()) {

                                   case NUMERIC:
                                       value[r][c] = ""
                                            + cell.getNumericCellValue();
                                       break;

                                   case STRING:
                                       value[r][c] = ""
                                            + cell.getStringCellValue();
                                       break;

                                   case BLANK:
                                      value[r][c] = "[BLANK]";
                                      break;
                                   
                                default:
                                }
                                System.out.print(value[r][c] + "\t");   
                                

                            } else {
                                System.out.print("[null]\t");                               
                            }
                        } 
                        System.out.print("\n");  
                    }
                } 
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
      }

    public static void main(String[] args) throws IOException { 
        Test obj = new Test();      
        obj.XlsxRead_2();   
    }

}

结果是:

姓名年龄身高
user_1 35.0 111.0
user_2 18.0 112.0
user_3 55.0 123.0

您可以使用 WorkbookFactory,以下代码片段可能会有所帮助。

Workbook workbook = WorkbookFactory.create(inputStream);
    Sheet sheet = workbook.getSheetAt(0);

    Iterator<Row> iterator = sheet.iterator();
    
    while(iterator.hasNext()) {
         Row row = iterator.next();
         if(row.getCell(0) == "username") {
               System.out.print(row.getCell(1));
               System.out.print(row.getCell(2));
         }
    }