1
我使用的是POI的3.10版本。我遇到的问题是我正在创建一个xls,xlsx文件。写入文件时看起来都不错。它大约是2MB。当我在Excel中打开时,它会将文件截断为4K,而我只能得到列标题,所有数据都消失了。如果我试图打开xlsx它说它已损坏。其他人都遇到了这个问题。Excel文件写入后损坏
这是写入数据行的代码。
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());
}
}
好吧,试试看,得到一个17K文件。但是,当我在Excel中只打开列标题并将文件截断为4k。这之后我按照建议写了一遍毕竟创建的行。我猜你在说什么就是写这本书一次。我做了写入列,写入,然后开始行。所以我现在会回去改变。不知道这将如何处理20MB的数据。感谢Rob – Unixjedi 2014-10-13 19:41:30
您*必须*只写出所有更改的最后,Excel文件格式不起作用。对于非常大的文件,请使用CSV代替(即流),或使用SXSSF(带有强加的限制) – Gagravarr 2014-10-13 20:13:36
谢谢,照顾它。现在XSSF(xlsx)在save.java.lang.NoSuchMethodError上失败:org.apache.xmlbeans.XmlOptions.setSaveCDataLengthThreshold(I)Lorg/apache/xmlbeans/XmlOptions - 使用2.6 XMLBeans – Unixjedi 2014-10-13 22:50:27