使用OI-3.5-FINAL向EXCEL写入多行

时间:2012-08-29 09:39:29

标签: excel file-io apache-poi

我有一些数据可以将它们放入Excel工作表中,4个值,n行。我试过这个:

final HSSFWorkbook wb = new HSSFWorkbook();
final HSSFSheet sheet = wb.createSheet();
FileOutputStream stream;
HSSFRow row = null;
try {
    stream = new FileOutputStream(targetDirectory + "workbook.xls");

    for (int i = 1; i < data.size(); i++) {

        row = sheet.createRow((short) i);
        cell = row.createCell(0);
        cell.setCellValue("Das");
        cell = row.createCell(1);
        cell.setCellValue("hier");
        cell = row.createCell(2);
        cell.setCellValue("soll");
        cell = row.createCell(3);
        cell.setCellValue("rein");
        wb.write(stream);

    }

    stream.close();


} catch ...

在写入EXCEL文件时,我可以看到将大小增加到1.600 kB。当我打开表单时,我看到一行。在不保存的情况下关闭文件会将大小减小到4 kB。 它看起来像所有那些但却看不见的行?

任何想法,我做错了什么?

1 个答案:

答案 0 :(得分:2)

我不知道为什么,但你似乎是在每一行写出工作簿,总是写在同一个文件中。这意味着你最终会在同一个文件中找到工作簿的多个副本,这根本不是你想要的!

wb.write调用移到最后,它应该都可以正常工作。 Excel是二进制格式,它不像CSV,因此您只应在完成后写出文件