2013-12-10 21 views
0

我使用apache poi包來創建表示形狀(區域,周長,質心)特徵的數字電子表格。的問題是,我有一個方法:writeDatabase(),因爲它們被發現,其輸出的形狀的特徵,輸出電子表格看起來像這樣: http://s23.postimg.org/hqsfg76jv/Capture.png使用Apache POI在Excel中啓動新行的問題

所有的這些數字需要在同一直線上,並那麼下一條記錄需要換行。該writeDatabase方法如下所示

public static void writeDatabase(int value, int cellNum){ 

    try { 
     Cell cell1=null; 
     FileInputStream file = new FileInputStream(new File("features.xls")); 
     Workbook workbook = new HSSFWorkbook(file); 
     Sheet sheet = workbook.getSheetAt(0); 

     int lastRow = sheet.getPhysicalNumberOfRows(); 

     cell1 = sheet.createRow(lastRow).createCell(cellNum); 
     cell1.setCellValue(value); 

     FileOutputStream outFile =new FileOutputStream(new File("features.xls")); 
     workbook.write(outFile); 
     outFile.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

我認爲這個問題是與該行中的每個時間被調用,但我不能認爲一個替代的: INT LASTROW = sheet.getPhysicalNumberOfRows();

任何想法?

回答

0

您需要提供一個新的線路是否應該啓動或沒有一些指示(除非你可以告訴大家,一個新的行只是開始,因爲cellNum是0?)

然後,您可以創建一個新的行,或者使用現有行:

int lastRow = sheet.getPhysicalNumberOfRows(); 

    Row row; 
    if (startNewRow) { 
     row = sheet.createRow(lastRow); 
    } else { 
     row = sheet.getRow(lastRow - 1); 
    } 

    cell1 = row.createCell(cellNum); 
    cell1.setCellValue(value); 

startNewRow可能基於cellNum進行設置,或者可能是被傳遞到writeDatabase額外的參數,無論是適當的。