2015-04-01 47 views
1

我有以下代碼讀取電子表格並寫入管道定界文件。行長度不同。最後一個單元格不應該附加管道字符(但會)。我嘗試了諸如https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Row.html#getLastCellNum()之類的東西,但無法使其工作。Apache POI查找行中的最後一個單元

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(); 

回答

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"); 
}