您的位置:首页 > 其它

用Jxl实现将统计数据导出到excel表中

2007-07-31 20:16 519 查看
项目需求 在统计网站数据时,用户往往希望 能把下载量,注册用户数等统计数据导出到EXCEL表中.在JAVA中我们可以使用JXL包方便的实现该功能.

由于我们的项目使用struts.spring,hibernate等技术,因此我们可以在查询统计数据的ACTION中将统计数据写到EXCEL表中,在查询页面用户就可以直接导出EXCEL文件.ACTION中的代码如下

Date date=new Date();
long date_long=date.getTime();
String path=request.getSession().getServletContext().getRealPath("/excel/");
File file=new File(path);
if(!file.exists())
{
file.mkdir();
}

String filepath=path+"/"+date_long+".xls";//生成EXCEL文件名

try {
jxl.write.WritableWorkbook wwb=null;
wwb=jxl.Workbook.createWorkbook(new java.io.File(filepath));
jxl.write.WritableSheet ws=wwb.createSheet("统计报表", 0); //创建EXCEL文件

int rows=0;

int step=0;
jxl.write.Label lable1=new jxl.write.Label(step, rows, "统计日期");//生成字段

ws.addCell(lable1);

jxl.write.Label lable3=new jxl.write.Label(step+2, rows, "下载量");

ws.addCell(lable3);

jxl.write.Label lable4=new jxl.write.Label(step+3, rows, "用户注册数");

ws.addCell(lable4);

if(list!=null&&list.size()>0)
{

for(rows=1;rows<list.size()+1;rows++)//生成内容
{
UserRegdownByHourInfo mag=(UserRegdownByHourInfo)list.get(rows-1);
jxl.write.Label lable11=new jxl.write.Label(step, rows, mag.getChannelid());

ws.addCell(lable11);

jxl.write.Number lable33=null;
if(mag.getDowntotal()!=null)
{
lable33=new jxl.write.Number(step+2, rows, mag.getDowntotal());
}
else
{
lable33=new jxl.write.Number(step+2, rows,0 );
}

ws.addCell(lable33);

jxl.write.Number lable44=null;
if(mag.getRegistertotal()!=null)
{
lable44=new jxl.write.Number(step+3, rows,mag.getRegistertotal());
}
else
{
lable44=new jxl.write.Number(step+3, rows,0);
}

ws.addCell(lable44);
}
}

wwb.write();

wwb.close();

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

request.setAttribute("filepath", filepath);//将EXCEL文件名传给JSP页面

对应的JSP代码

<a href="<bean:write name="filepath" />" target='blank' >导出为excel文档</a>(右键单击另存为)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: