execl 导出文件

两个月前,做过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

,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值