如何使用apache POI从excel文件中的特定位置获取结果

时间:2014-07-09 06:16:40

标签: java excel apache apache-poi

我有一个excel文件,其中包含各种信息,还包含一个表结构,其中包含两个标题单元代码和说明。所以现在我能够使用POI读取整个excel文件,但我的问题是我需要阅读只有excel中表格的两个值。但是我无法正确地做到这一点,这是我的代码到目前为止我所做的。

public class ReadExcelFileToList {

public static void main(String[] args) throws IOException {

    InputStream input = null;

    try {

        input = new FileInputStream(
                "C:\\Users\\jeet.chatterjee\\Downloads\\unitUploadFormat.xlsx");

        System.out.println("file is found");

        XSSFWorkbook wb = new XSSFWorkbook(input);
        XSSFSheet sheet = wb.getSheetAt(0);
        int rowCount = 0;
        Iterator rows = sheet.rowIterator();
        while (rows.hasNext()) {
            XSSFRow row = (XSSFRow) rows.next();
            System.out.println("\n");
            if (rowCount == 3) {
                Iterator cells = row.cellIterator();

                while (cells.hasNext()) {

                    XSSFCell cell = (XSSFCell) cells.next();
                    if (XSSFCell.CELL_TYPE_STRING == cell.getCellType())
                        System.out.print(cell.getStringCellValue()
                                + "     ");

                    /*
                     * else if (XSSFCell.CELL_TYPE_STRING ==
                     * cell.getCellType())
                     * System.out.print(cell.getStringCellValue() +
                     * "     "); else if (XSSFCell.CELL_TYPE_STRING ==
                     * cell.getCellType())
                     * System.out.print(cell.getStringCellValue() +
                     * "     ");
                     */

                    else
                        System.out.print("Unknown cell type");

                }
                rowCount++;
            }
        }

    } catch (IOException ex) {

        ex.printStackTrace();
    } finally {
        input.close();
    }

}

}

我正在使用sheet.getLastRowNum()来获得我想要的结果,但我没有得到它,请帮助。here is my excel file 。这是我的excel文件,我只想获得kg&千克价值等等,将在那里放置的所有物品都将被提取。

2 个答案:

答案 0 :(得分:0)

您的代码中的错误由getLastRowNum的API解释

  

返回:最后一行包含此表(基于0)

所以你想要

if(rowCount == 4){

但当然如果有空行,结果可能也不是你想要的。

修改

为什么要这么难。

使用

XSSFRow row = sheet.getRow(4);
XSSFCell cell = row.getCell(1)

答案 1 :(得分:0)

 while (rows.hasNext()) {
            XSSFRow row = (XSSFRow) rows.next();
            if(rowCount==3){
            Iterator cells = row.cellIterator();
            while (cells.hasNext()) {
                XSSFCell cell = (XSSFCell) cells.next();
                    System.out.print(cell.getStringCellValue()+"\t");
                }
            }
            System.out.println();
            rowCount++;
        }
像Scary Wombat所说的那样,使用你自己的行计数器。