导出excel

要实现Excel首先是需要的夹包如下

poi-3.13-20150929.jar

导入夹包后就开始实现功能了,我用的是java,spring+springmvc+mybtis,前台使用的是jsp,js.easyui

========开始==========

==========前台的写法===========

<iframe name="download"  id="download"  style="display:none"></iframe>    定义一个内嵌页,给个id

//导出Excle
   $("#exBtn").click(function(){       
      var list=$("#usertable").datagrid('getSelections');//easyui的方法,得到所有的勾选的chackboox,结果是个list,里面是一行行的数据,就相当于一个个的实体
         if(list.length<1){
              $.messager.show({
                    title:'提示',
                     msg:'请选择一条语句在导出'
               });
           }else{

            //用内嵌页来接收
            $("#download").attr('src',
               "${pageContext.request.contextPath}/user/exportUser.do?list1="+JSON.stringify(list));//将list转化为json字符串

           //或是下面这样写,这样不用定义内嵌页,直接写就可以

         //window.open("${pageContext.request.contextPath}/user/exportUser.do?list1="+JSON.stringify(list));
           }
     })

==========后台的写法===========

@RequestMapping(value="/exportUser",produces = "application/json; charset=utf-8")
    @ResponseBody
    public String excleport(HttpServletRequest request,HttpServletResponse response) throws IOException{
        //获取前台传来的数据,json格式的字符串
        String lists=new String(request.getParameter("list1").getBytes("iso-8859-1"));
        List<selectUser> list=null;
        //System.out.println(lists);
        String filename="人员信息";
        if(StringUtils.isNoneBlank(lists)){//判断数据不为空
            //将字符串转成json,在转成list
            JSONArray jsonarray=JSONArray.fromObject(lists);
            list=(List<selectUser>)jsonarray.toCollection(jsonarray, selectUser.class);
            if(!list.isEmpty()){
            }else{
                return null;
            }
        }else{
            return null;
        }
         // 创建一个Excel文档对象,相当于一个空白页
         Workbook wb = new HSSFWorkbook();
         //创建一个表,空白页上有了行和列的方格,相当于一个空的excle表格
         Sheet sheet= wb.createSheet();
         // 创建一行,参数0代表创建excle的第一行
         Row titleRow = sheet.createRow(0);
         //创建一行的每一列。并赋值
         Cell cell=titleRow.createCell(0);//创建表头第一列
         cell.setCellValue("用户姓名");//第一列表头起名字
         titleRow.createCell(1).setCellValue("用户年龄");//创建表头第二列,并给第二列起名
         titleRow.createCell(2).setCellValue("用户性别");
         titleRow.createCell(3).setCellValue("用户电话");
         titleRow.createCell(4).setCellValue("用户身份证");
         titleRow.createCell(5).setCellValue("创建时间");
         titleRow.createCell(6).setCellValue("用户邮箱");
         //程序运行到这里就导出的话,效果就是一个excle表格有一行,这一行一共有7列,
         //每一列的名字是上面指定的,但是没有数据,
         
         //循环创建第2行、第3行....,并且给每一行创造列,并将list里的数据赋值给每一列
         Row itemRow = null;
         int i=0;
         for(selectUser u:list){
             itemRow=sheet.createRow(++i);
             Cell cell1=itemRow.createCell(0);
             cell1.setCellValue(u.getName());
             itemRow.createCell(1).setCellValue(u.getAge());
             itemRow.createCell(2).setCellValue(u.getSex());
             itemRow.createCell(3).setCellValue(u.getPhonenumber());
             itemRow.createCell(4).setCellValue(u.getIdcard());
             itemRow.createCell(5).setCellValue(u.getCreatedate());
             itemRow.createCell(6).setCellValue(u.getEmail());
         }        
        response
        .setHeader("Content-Disposition","attachment;filename="+new String(filename.getBytes("utf-8"), "iso8859-1")+".xls");
        wb.write(response.getOutputStream());
        return null;
    }

 

posted @ 2017-05-12 14:14  雪儿蛇王  阅读(228)  评论(0编辑  收藏  举报