Apache POI只写一条记录

时间:2018-02-23 21:31:42

标签: java excel apache-poi

我使用Apache POI将一些数据写入excel文件,但由于某种原因,该文件仅显示最后一条记录(仅限1条记录)。我有通过的POLJO清单。我也在迭代细胞,但我得到的只是一条记录。

在excel中编写的方法

public void writeToExcel(List<NYProgramTO> to){
    try {
        Workbook workBook = new HSSFWorkbook();
        CreationHelper helper = workBook.getCreationHelper();
        Sheet sheet = workBook.createSheet("NY_PPA_P3_Sheet");

        Row headerRow = sheet.createRow(0);
        headerRow.createCell(0).setCellValue("First Name");
        headerRow.createCell(1).setCellValue("Last Name");
        headerRow.createCell(2).setCellValue("Policy Number");
        headerRow.createCell(3).setCellValue("Zip Code");
        headerRow.createCell(4).setCellValue("Date of Birth");

        if(to != null){
            int size = to.size();

            for(int i = 0; i < size; i++){
                NYProgramTO nyP= to.get(i);
                Row row = sheet.createRow(1);
                row.createCell(0).setCellValue(nyP.getFirstName());
                row.createCell(1).setCellValue(nyP.getLastName());
                row.createCell(2).setCellValue(nyP.getPolicyNumber());
                row.createCell(3).setCellValue(nyP.getZipCode());
                row.createCell(4).setCellValue(nyP.getDateOfBirth());
            }
        }
        FileOutputStream stream = new FileOutputStream("NY_PPA_P3.xlsx");
        workBook.write(stream);
        stream.close();
        System.out.println("NY_PPA_P3.xlsx created successfully.");

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:3)

如果只有一个记录&#34;你的意思是只出现一行,这可能很容易通过确保在写单元格之前增加正在创建的来实现。

尝试更改:

Row row = sheet.createRow(1);

为:

Row row = sheet.createRow(i+1);