javaEXCEL导出的问题 在线等的 高手进。。。。
导出成xls格式的 有大量的数据 大约600万就会出现内存溢出。。。怎样解决这个问题。。。。。。。。。
用的是jxl。。。下面是代码。。。
//生成EXCEL文件
public void cpmLogEXCEL(){
String startTime="";
String endTime="";
if(getParamFromRequest("startTime1")!=null){
startTime=getParamFromRequest("startTime1");
}
if(getParamFromRequest("endTime1")!=null){
endTime=getParamFromRequest("endTime1");
}
String scpid=getParamFromRequest("cpid");
String actionTag=getParamFromRequest("actionTag");
String schannelid=getParamFromRequest("channelid");
Timestamp t_date1 = null;
Timestamp t_date2 = null;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//String time = df.format(new Date());
Date date1 = null;
Date date2= null;
if(!"".equals(startTime) && !"".equals(endTime) && !startTime.equals(endTime)){
try {
date1=df.parse(startTime);
date2=df.parse(endTime);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
t_date1 = new Timestamp(date1.getTime());
t_date2 = new Timestamp(date2.getTime());
Long cpid=null;
if(scpid!=null && scpid.length()>0){
cpid=Long.valueOf(scpid);
}
Long channelid = null;
if(schannelid!=null&&!"".equals(schannelid)){
channelid=Long.valueOf(schannelid);
}
HttpServletResponse response = (HttpServletResponse)ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=\"CpmLog.xls\"");
response.setContentType("text/html;charset=utf-8");
try{
cpLoglist=cpmLogMgr.getCpLogListvo(t_date1, t_date2, cpid, msg, actionTag, channelid);
if(null!=(String)getParamFromSession("UserID") && !"".equals((String)getParamFromSession("UserID")) )
{
//添加日志
String UserID = (String)getParamFromSession("UserID");//UserID
String UserUID=(String)getParamFromSession("UserUID");//帐号
AdminLog adminlogvo=new AdminLog("2","16","16",Long.parseLong(UserID),UserUID,"业务日志HTML格式导出");
SaveLog.saveAdminLog(adminlogvo);
}
OutputStream os=response.getOutputStream();
WritableWorkbook book=Workbook.createWorkbook(os);
WritableSheet wsheet=book.createSheet("cp事件日志", 0);
Label label=null;
//加列名
// label=new Label(0,0,"日志id");
// wsheet.addCell(label);
label=new Label(0,0,"日志时间");
wsheet.addCell(label);
label=new Label(1,0,"动作标签");
wsheet.addCell(label);
label=new Label(2,0,"资源名称");
wsheet.addCell(label);
label=new Label(3,0,"操作者名称");
wsheet.addCell(label);
label=new Label(4,0,"操作者ID");
wsheet.addCell(label);
label=new Label(5,0,"频道ID");
wsheet.addCell(label);
label=new Label(6,0,"CPID");
wsheet.addCell(label);
label=new Label(7,0,"栏目ID");
wsheet.addCell(label);
label=new Label(8,0,"专区ID");
wsheet.addCell(label);
label=new Label(9,0,"内容ID");
wsheet.addCell(label);
label=new Label(10,0,"产品ID");
wsheet.addCell(label);
label=new Label(11,0,"章ID");
wsheet.addCell(label);
label=new Label(12,0,"日志内容");
wsheet.addCell(label);
label=new Label(13,0,"发生位置");
wsheet.addCell(label);
label=new Label(14,0,"内容类型");
wsheet.addCell(label);
for(int r=0; r<cpLoglist.size(); r++){
label=new Label(0,r+1,cpLoglist.get(r).getLogTime()+"");
wsheet.addCell(label);
label=new Label(1,r+1,cpLoglist.get(r).getActionTag()+"");
wsheet.addCell(label);
label=new Label(2,r+1,cpLoglist.get(r).getResourceName()+"");
wsheet.addCell(label);
label=new Label(3,r+1,cpLoglist.get(r).getOperatorName()+"");
wsheet.addCell(label);
label=new Label(4,r+1,cpLoglist.get(r).getOperatorId()+"");
wsheet.addCell(label);
label=new Label(5,r+1,cpLoglist.get(r).getBusinessSortId()+"");
wsheet.addCell(label);
label=new Label(6,r+1,cpLoglist.get(r).getCpId()+"");
wsheet.addCell(label);
label=new Label(7,r+1,cpLoglist.get(r).getColId()+"");
wsheet.addCell(label);
label=new Label(8,r+1,cpLoglist.get(r).getCatalogId()+"");
wsheet.addCell(label);
label=new Label(9,r+1,cpLoglist.get(r).getContentId()+"");
wsheet.addCell(label);
label=new Label(10,r+1,cpLoglist.get(r).getProductId()+"");
wsheet.addCell(label);
label=new Label(11,r+1,cpLoglist.get(r).getChapterId()+"");
wsheet.addCell(label);
label=new Label(12,r+1,cpLoglist.get(r).getMsg()+"");
wsheet.addCell(label);
label=new Label(13,r+1,cpLoglist.get(r).getPosition()+"");
wsheet.addCell(label);
label=new Label(14,r+1,cpLoglist.get(r).getContentType()+"");
wsheet.addCell(label);
}
book.write();
book.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}