如何在Excel中迭代列以获取行标记数据?

Mad*_*dan 3 java excel apache-poi

我正在编写一个 Java 程序,我想在其中检索具有行标题的数据。我的 Excel 工作表如下所示:

在此输入图像描述

我编写了以下简单的 Java 代码来根据行标题顺序检索值:

....
try
    {
    fileSystem = new POIFSFileSystem (inpStrm);

    HSSFWorkbook      workBook = new HSSFWorkbook (fileSystem);
    HSSFSheet         sheet    = workBook.getSheetAt(0);
    int column = 1;
    for(int i = 0;i <=3;i++){

        for(int j = 0;j<=3;j++){
            HSSFRow row = sheet.getRow(j);
            System.out.print(row.getCell(column).getStringCellValue() + "    ");
        }
        System.out.println("");
        column++;
    }
    }
    catch(Exception e){
        e.printStackTrace();
    }
....
Run Code Online (Sandbox Code Playgroud)

运行代码后,我的输出如下所示:

P1    M    C1    Hyderabad    
P2    M    C2    Pune    
P3    F    C3    Pune    
P4    M    C4    Hyderabad 
Run Code Online (Sandbox Code Playgroud)

现在有没有简单可行的方法可以对大型 Excel 工作表(50 行标题)执行相同的操作?

如果我使用具有以上四个属性的 POGO 类,那么如何从 Excel 获取具有值的对象列表?

win*_*rrr 6

现在有没有简单可行的方法可以对大型 Excel 工作表(50 行标题)执行相同的操作?

您可以在 for 循环中使用该方法sheet.getLastRowNum()作为条件来迭代所有行,并row.getLastCellNum()在第二个循环中使用该方法作为条件来迭代特定行中的所有单元格。

for(int rowNumber = 0; rowNumber < sheet.getLastRowNum(); rowNumber++) {
    HSSFRow row = sheet.getRow(rowNumber);

    for(int columnNumber = 0; columnNumber < row.getLastCellNum(); columnNumber++) {
        HSSFCell cell = row.getCell(columnNumber);
        if(cell != null) {
            // do something with the cell
        }
}
Run Code Online (Sandbox Code Playgroud)

重要提示:上面的代码首先循环每列,然后循环每行。