簡體   English   中英

如何在while循環中增加行計數器變量?

[英]How to increment my row counter variable in my while loop?

我試圖將第一個單元格中具有數據的每一行讀取到對象ArrayList中。 我的問題是我的代碼似乎沒有使我的計數器超過第一行。 我是否缺少簡單的東西?

        try
            {
                wb = new XSSFWorkbook(new FileInputStream(fileName));
            } 
        catch (FileNotFoundException e)
            {
                e.printStackTrace();
            } 
        catch (IOException e)
            {   
                e.printStackTrace();
            }

        XSSFSheet sheet = wb.getSheetAt(2);
        ArrayList<Object> obj = new ArrayList<Object>();
        int rowIndex = 0;
        int cellIndex = 0;
        XSSFRow row = sheet.getRow(rowIndex);
        Iterator<Cell> rowItr = row.iterator();

        while(rowIndex <= sheet.getLastRowNum())
            {
                if(row.getCell(0) == null)
                    {
                        continue;
                    }
                else
                    {
                        while(rowItr.hasNext() && rowItr.next() != null)
                                    {
                                        XSSFCell cell = row.getCell(cellIndex);

                                        if(cell == null)
                                            {
                                                continue;
                                            }
                                        else
                                            {       
                                                obj.add(row.getCell(cellIndex).toString());
                                            }
                                        cellIndex++;
                                    }

                                rowIndex++;
                                cellIndex = 0;

                            }

                        System.out.println(obj.toString());
                    }
                rowIndex++;
            }   
    }

輸出量

[ValuSmart Series 1120 Double Hung]

... 我得到此輸出72次,因為工作表中有72行

隔離回路

ArrayList<Object> obj = new ArrayList<Object>();
int rowCounter = 16;
        int x = 0;

        while(rowCounter <= 21)
            {

                XSSFRow row = sheet.getRow(rowCounter);
                Iterator<Cell> rowItr = row.iterator();

                while(rowItr.hasNext() && rowItr.next() != null)
                    {

                                XSSFCell cell = row.getCell(x);


                                if(cell == null)
                                    {
                                        continue;
                                    }
                                else
                                    {

                                        obj.add(row.getCell(x).toString());
                                    }
                        x++;

                    }

                rowCounter++;
                x = 0;
            }
        System.out.println(obj.toString());

您不會在任何地方選擇下一行,並且循環很混亂,並且在基於索引和基於迭代器的查找之間進行切換。 嘗試一個簡單的增強型for循環:

for (Row row : sheet) {
    for (Cell cell : row) {
        if (cell != null) {
            obj.add(row.getCell(x).toString());
        }
    }
}
System.out.println(obj.toString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM