两个月前,做过execl导出文件,后来面试的时候被问过好几次使用的是什么技术,不过我真的忘却了是使用的什么包,后来回去总结了一下
第一种方法: jxl,需要注意的是前端请求的时候不能用ajax json,一定要用href
/**
** 调用 导出execl 的代码
*/
{
List<RegisterStatistic> dataList = this.accountService.getRegisterByPage(map);
//将数据保存为execl
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/vnd.ms-excel");
try {
response.addHeader("Content-Disposition", new String(("filename=registerStatistic.xls").getBytes("GBK"), "ISO-8859-1"));
int res = new SaveRegisterStatisticExecl().save(response, dataList);
System.out.println("导出execl结果: "+res);
} catch (IOException e) {
e.printStackTrace();
} finally{
return SUCCESS;
}
}
/**
** 导出 execl 的工具类
*/
public class SaveRegisterStatisticExecl {
public int save(HttpServletResponse response,List<RegisterStatistic> dataList){
jxl.write.WritableWorkbook wwb = null;
OutputStream out = null;
try {
out = response.getOutputStream();
wwb = Workbook.createWorkbook(out);
// 在 sheet1 里写内容
jxl.write.WritableSheet sheet = wwb.createSheet("sheet1", 0);
// 设置表头
jxl.write.Label label1 = new jxl.write.Label(0, 0, "日期");
jxl.write.Label label2 = new jxl.write.Label(1, 0, "注册总量");
jxl.write.Label label3 = new jxl.write.Label(2, 0, "激活总量");
jxl.write.Label label4 = new jxl.write.Label(3, 0, "邮箱注册");
jxl.write.Label label5 = new jxl.write.Label(4, 0, "QQ注册");
jxl.write.Label label6 = new jxl.write.Label(5, 0, "微博注册");
jxl.write.Label label7 = new jxl.write.Label(6, 0, "邀请注册");
sheet.addCell(label1);
sheet.addCell(label2);
sheet.addCell(label3);
sheet.addCell(label4);
sheet.addCell(label5);
sheet.addCell(label6);
sheet.addCell(label7);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
<span style="white-space:pre"> </span>// 添加数据
for(int i=0;i<dataList.size();i++){
RegisterStatistic one = dataList.get(i);
Label l1 = new jxl.write.Label(0, i+1, one.getDate());
Label l2 = new jxl.write.Label(1, i+1, String.valueOf(one.getAlluser()));
Label l3 = new jxl.write.Label(2, i+1, String.valueOf(one.getRegistuser()));
Label l4 = new jxl.write.Label(3, i+1, String.valueOf(one.getEmailuser()));
Label l5 = new jxl.write.Label(4, i+1, String.valueOf(one.getQquser()));
Label l6 = new jxl.write.Label(5, i+1, String.valueOf(one.getWeibouser()));
Label l7 = new jxl.write.Label(6, i+1, String.valueOf(one.getShareuser()));
sheet.addCell(l1);
sheet.addCell(l2);
sheet.addCell(l3);
sheet.addCell(l4);
sheet.addCell(l5);
sheet.addCell(l6);
sheet.addCell(l7);
}
wwb.write();
wwb.close();
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
return 0;
}
return 1;
}
}
我这个是个最简单的,复杂的请看大牛贴 http://www.cnblogs.com/mingforyou/archive/2013/08/26/3282922.html
第二种方法: POI
这个我木有用过,找了篇帖子 http://jiaozhiguang-126-com.iteye.com/blog/1673965
,