使用Apache POI在Excel中启动新行的问题

时间:2013-12-10 21:12:16

标签: java excel apache-poi

我正在使用apache poi包创建一个数字电子表格,它代表一个形状(区域,周长,质心)的特征。问题是我有一个方法:writeDatabase()输出形状的功能,输出电子表格如下所示: http://s23.postimg.org/hqsfg76jv/Capture.png

所有这些数字都需要在同一行,然后需要为下一条记录采用新行。 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();

有什么想法吗?

1 个答案:

答案 0 :(得分: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的其他参数,以适当者为准。