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