Apache POI在行中找到最后一个单元格

时间:2015-04-01 09:01:28

标签: java excel apache-poi

我有以下代码读取电子表格并写入管道分隔文件。行长度不同。最后一个单元格不应该附加管道符号(但确实如此)。我试过像https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Row.html#getLastCellNum()这样的东西但是无法使它工作。

XSSFWorkbook wb = new XSSFWorkbook(pathandfilename);
    for (int i = 0; i < wb.getNumberOfSheets(); i++) {
        XSSFSheet sheet = wb.getSheetAt(i);
        String outfilename = path + "\\" + prefix + sheetname + postfix;
        PrintWriter outfilewriter = new PrintWriter(outfilename, "UTF-8");
        Iterator<Row> rowIterator = sheet.iterator();
        while (rowIterator.hasNext()) {
            Row row = rowIterator.next();
            Iterator<Cell> cellIterator = row.cellIterator();
            while (cellIterator.hasNext()) {
                Cell cell = cellIterator.next();
                cell.setCellType(Cell.CELL_TYPE_STRING);
                outfilewriter.print(cell.getStringCellValue() + "|");
            }
            outfilewriter.print("\n");
        }
        outfilewriter.close();
    }
wb.close();

1 个答案:

答案 0 :(得分:0)

我这样修好了:

while (rowIterator.hasNext()) {    
Row row = rowIterator.next();
    List<String> recordArry = new ArrayList<String>();
    Iterator<Cell> cellIterator = row.cellIterator();
    while (cellIterator.hasNext()) {
        Cell cell = cellIterator.next();
        cell.setCellType(Cell.CELL_TYPE_STRING);
        recordArry.add(cell.getStringCellValue() + "|");
    }
    StringBuilder recordString = new StringBuilder();
    for (String elem : recordArry) {
        recordString.append(elem);
    }
    String recordString2 = StringUtils.chomp(recordString.toString(), "|");
    outfilewriter.print(recordString2);
    outfilewriter.print("\n");
}