原来是POI 3.0,发现文件8M多的时候,
生成的文件是损坏的,打开就报类似这样的错误:
“该文件破坏程度太大,不能进行修复。 Excel 会尝试恢复公式和值,但有些数据可能已经丢失或损坏”
换为POI 3.1,没有问题了……
换为3.2版本,发现一些单元格数据没有了,
折腾一番,下载POI 源代码,跟踪,发现……
org.apache.poi.hssf.model下Sheet.java中,
public void addRow(RowRecord row){}方法中,有
RowRecord existingRow = _rowsAggregate.getRow(row.getRowNumber()); if (existingRow != null){ _rowAggregate.removeRow(existingRow); }
狂晕!!!
如果该行已经存在,再调用createRow的话,会把已存在的Row删除……
解决办法: 先用getRow(rowNum)取得一下,如果返回null,说明不存在,这时再Create。
|