[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[备忘]POI 3.2数据丢失之谜……

上一篇:[备忘]让ExtJs的combobox不显示HTML……
下一篇:[转]mysql导入数据,LOAD DATA LOCAL INFILE

添加日期:2009/5/29 22:09:13 快速返回   返回列表 阅读5651次
原来是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。
 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved