java.lang.NullPointerException错误,使用

时间:2015-09-30 21:00:23

标签: java excel apache-poi

我正在编写一个代码,在输入表中找到所需的列并获取整个列并将其以不同的顺序放在输出表中。基本上我想要一个Excel文件并在输出文件中重新组织它。我选择的路径是找到列的数值并使用它来查找每行中的单元格。我在线上收到错误 rdrCell = inputSheet.getRow(placeRow+1).getCell(y); 我试图获得单元格值的方式有问题吗?

for(Iterator<Cell> cit = idRow.cellIterator(); cit.hasNext(); )
            {
                Cell cell = cit.next();
                cell.setCellType(Cell.CELL_TYPE_STRING);
                String chr = "Chr";
                Row rdrRow = null;
                Cell rdrCell = null;
                if(chr.equals(cell.getStringCellValue()))
                {
                    int y = cell.getColumnIndex();
                    for(int placeRow = 0; placeRow<=rowCounter;placeRow++)
                    {
                        // error in line below
                        rdrCell = inputSheet.getRow(placeRow+1).getCell(y);
                        rdrCell.setCellType(Cell.CELL_TYPE_STRING);
                        String chrString = rdrCell.getStringCellValue();
                        Cell chrCell = outputSheet.createRow(placeRow).createCell(0);
                        chrCell.setCellValue(chrString);
                    }

                }

2 个答案:

答案 0 :(得分:2)

你的for循环太过分了。

for(int placeRow = 0; placeRow<=rowCounter;placeRow++)

更改中间部分并检查placeRow < rowCounter而不是<=

答案 1 :(得分:1)

当你的placeRow等于最后一个索引(我的意思是placeRow = rowCounter)时会发生这种情况,所以你试图获得placeRow + 1,但是你已经达到行限制而且它不存在。

我建议您删除此+1并使用:

rdrCell = inputSheet.getRow(placeRow).getCell(y);

所以如果你想跳第一行(就像它发生的那样),只需在索引1处启动你的迭代器,如:int placeRow = 1