这是一个涉及大批数据写.xls的代码,有点问题,请各位有经验的高手帮我看看是什么问题,很急的

Gundam_zero 2006-08-01 11:53:30
下面的代码在数据导出是有时会抛WritableWorkbook 是空指针,重启tomcat后有时不会,在数据量比较大时也是会抛,不稳定.请我位高手帮我看看是什么问题,下面是部分代码.
代码:
......
int cellId = 0;
int rowId = 0;
int count = 0;
String fileName = "Article";
File f = new File(path,
timeFile + "_" + String.valueOf(copartnerId) + "_" + fileName +
String.valueOf(count) +
".xls");
OutputStream os = new FileOutputStream(f);
jxl.write.WritableWorkbook wwb = jxl.Workbook.createWorkbook(os);
String sheetName = "Article";
jxl.write.WritableSheet pws = wwb.createSheet(sheetName, 0);
try {
conn = env.getDS().getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
//从结果集里拿出数据写入.xls
while (rs.next()) {
try {

if (rowId >= max) { //每max条记录写入一个xls文件
if(wwb!=null){
wwb.write();
wwb.close();
}else{
System.out.println("wwb is null in article");
}
list.add(path + timeFile + "_" + String.valueOf(copartnerId) + "_" +
fileName + String.valueOf(count) +
".xls");
tool.logfile(copartnerId, fw,
path + timeFile + "_" + String.valueOf(copartnerId) +
"_" + fileName + String.valueOf(count) +
".xls", timelog);
rowId = 0;
cellId = 0;
++count;
f = new File(path,
timeFile + "_" + String.valueOf(copartnerId) + "_" +
fileName + String.valueOf(count) +
".xls");
os = new FileOutputStream(f);
wwb = jxl.Workbook.createWorkbook(os);
pws = wwb.createSheet(sheetName + String.valueOf(count), count);
}
String articleId = String.valueOf(rs.getInt("articleid"));
String title = rs.getString("title");
String columnid = String.valueOf(rs.getInt("columnid"));
String content = tool.getString(rs.getClob("content"));
String bigpic = rs.getString("bigpic");
String midpic = rs.getString("midpic");
String smallpic = rs.getString("smallpic");
if (title == null) {
title = "";
}
if (content == null) {
content = "";
System.out.println("content:" + content);
}

if (bigpic == null) {
bigpic = "";
}
if (midpic == null) {
midpic = "";
}
if (smallpic == null) {
smallpic = "";
}

Label l0 = new Label(cellId++, rowId, articleId);
Label l1 = new Label(cellId++, rowId, title);
Label l2 = new Label(cellId++, rowId, bigpic);
Label l3 = new Label(cellId++, rowId, midpic);
Label l4 = new Label(cellId++, rowId, smallpic);
Label l5 = new Label(cellId++, rowId, columnid);
Label l6 = new Label(cellId++, rowId, content);

pws.addCell(l0);
pws.addCell(l1);
pws.addCell(l2);
pws.addCell(l3);
pws.addCell(l4);
pws.addCell(l5);
pws.addCell(l6);
rowId++;
cellId = 0;

}
catch (Exception e) {
System.out.println("*****Exception in exportArticle()******");
e.printStackTrace();
}
}
}
catch (Exception e) {
System.out.println("error in exportArtcile");

}
finally {
try{
if(wwb!=null){
System.out.println("end wwb");
wwb.write();
wwb.close();
}else{
System.out.println("wwb is null in article finally");
}
}catch(Exception ee){
System.out.println("error in exportArtcile");
}

list.add(path + timeFile + "_" + String.valueOf(copartnerId) + "_" +
fileName + String.valueOf(count) +
".xls");
tool.logfile(copartnerId, fw,
path + timeFile + "_" + String.valueOf(copartnerId) + "_" +
fileName + String.valueOf(count) +
".xls", timelog);
if (rs != null) {
rs.close();
}
Util.closeConn(conn, pstmt);
}
System.out.println("end exportArticle:" +
Util.
getLongDateFormatByTimestamp(new Timestamp(System.
currentTimeMillis())));

}
...全文
170 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧