有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Excel文件在写入后已损坏

我使用的是POI的3.10版本。我遇到的问题是,我正在创建一个xls,xlsx文件。在编写文件时,一切看起来都很好。大约2MB。当我在excel中打开时,它会将文件截断为4K,我只得到我的列标题,所有数据都消失了。如果我尝试以xlsx的形式打开,它会说它已损坏。其他人都遇到了这个问题

下面是写入数据行的代码

public void writeRow(int irow, String[] rdata) {
    Row row;
    Cell cell;
    int cellnum = 0;
    int rownum = irow;

    System.out.println("writeRow():ROW -> " + irow);
    row = _wSheet.getRow(irow);

    if (row == null) {
        System.out.println("writeRow():Creating Row " + irow);
        row = _wSheet.createRow(rownum);
    }

    for (String rdata1 : rdata) {
        cell = row.createCell(cellnum++);
        cell.setCellValue((String) rdata1);
    }
    write();
}

public void write() {
    try {
        _gWorkbook.write(_outF);
        _outF.flush();
    } catch (IOException wbe) {
        System.out.println("write(): Error writing workbook "+wbe.getMessage());
    }
}

共 (1) 个答案

  1. # 1 楼答案

    您似乎每行写一次文件,这不是您想要做的。完成后,你应该只在最后把工作簿写出来

    因此,要修复它,请更改代码,以便只在代码的最后调用Workbook.write(OutputStream)。不要试图边做边做,文件格式不是那样工作的