zoukankan      html  css  js  c++  java
  • JAVA操作Excle之Poi(二)批量导出Excle数据

    批量导入:

    界面JS:导出当前数据带参数

    function exportStudent(){
        $.messager.confirm('确认对话框', '确认要导出当前所有数据吗?', function(r){
            if (r){
                var name=$("#nameLike").val();
                var i=$('#sc').combobox("getValue");
                var sex=$("#sexLike").combobox("getValue");
                var address=$("#AddressLike").val();
                window.open("${pageContext.request.contextPath }/student/exportStudent.do?likeName="+name+"&sclassId="+i+"&sex="+sex+"&addressLike="+address+"");
            }
        });
    }

     后台逻辑:

    @RequestMapping("/exportStudent")
        public String exportStudent(@RequestParam(value="likeName",required=false) String likeName,@RequestParam(value="sclassId",required=false) Integer sclassId,@RequestParam(value="sex",required=false) String sex,@RequestParam(value="addressLike",required=false) String addressLike,HttpServletResponse response){
            Map<String, Object> param=new HashMap<String, Object>();
            if(StringUtil.getBoolean(likeName)){
                param.put("name", "%"+likeName.trim()+"%");
            }
            if(StringUtil.getBoolean(sex)){
                param.put("sex", sex);
            }
            if(sclassId!=null){
                param.put("sclassId", sclassId);
            }
            if(StringUtil.getBoolean(addressLike)){
                List<Address> AddresLikeList=addressService.findByLikeAddress(addressLike);
                List<Integer> strList=new ArrayList<Integer>();
                for(int i=0;i<AddresLikeList.size();i++){    
                    strList.add(AddresLikeList.get(i).getId());
                }
                param.put("addressId", strList);
            }
            List<Student> list=studentService.findAll(param);//查出list集合
            List<Map<String, Object>> map=createExcelRecord(list);//利用自己私有方法获得Map集合
            Workbook wb=new HSSFWorkbook();
            String headers[]={"学号","姓名","性别","年龄","班级","籍贯","生日"};
            try {
                ExcelUtil.fillExcelData(map, wb, headers);//参照下面的工具类
                Date date=DateUtil.getDate();
                String d=DateUtil.formatDate(date, "yyyyMMddHHmmss");//参照下面的工具类
                ResponseUtil.export(response, wb, "学生信息"+d);//参照下面的工具类
            } catch (Exception e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
            return null;
        }
        
        //内部方法
         private List<Map<String, Object>> createExcelRecord(List<Student> list) {
                List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
                Student student=null;
                for (int j = 0; j < list.size(); j++) {
                    student=list.get(j);
                    Map<String, Object> mapValue = new HashMap<String, Object>();
                    mapValue.put("学号", student.getId());
                    mapValue.put("姓名", student.getName());
                    mapValue.put("性别", student.getSex());
                    mapValue.put("年龄", student.getAge());
                    mapValue.put("班级", student.getSclassId().getName());
                    mapValue.put("籍贯", student.getAddressId().getSheng()+"省 "+student.getAddressId().getShi()+"市 "+student.getAddressId().getQu());
                    mapValue.put("生日", DateUtil.formatDate(student.getBirthday(), "yyyy-MM-dd HH:mm:ss"));
                    listmap.add(mapValue);
                }
                return listmap;
            }

    工具类:

    ExcleUtil

    package com.maya.util;
    
    import java.util.List;
    import java.util.Map;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    
    public class ExcelUtil {
    
        public static void fillExcelData(List<Map<String, Object>> list,Workbook wb,String[] headers)throws Exception{
            int rowIndex=0;
            Sheet sheet=wb.createSheet();
            Row row=sheet.createRow(rowIndex++);
            for(int i=0;i<headers.length;i++){
                row.createCell(i).setCellValue(headers[i]);
            }
            for(int i=0;i<list.size();i++){
                row=sheet.createRow(rowIndex++);
                for(int j=0;j<headers.length;j++){
                    row.createCell(j).setCellValue(list.get(i).get(headers[j]) == null?" ": list.get(i).get(headers[j]).toString());
                }
            }
        }
    }

    ResponseUtil

    package com.maya.util;
    
    import java.io.OutputStream;
    import java.io.PrintWriter;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.poi.ss.usermodel.Workbook;
    
    public class ResponseUtil {
    public static void export(HttpServletResponse response,Workbook wb,String fileName)throws Exception{
            response.setHeader("Content-Disposition", "attachment;filename="+new String((fileName + ".xls").getBytes("utf-8"),"iso8859-1"));
            response.setContentType("application/ynd.ms-excel;charset=UTF-8");
            OutputStream out=response.getOutputStream();
            wb.write(out);
            out.flush();
            out.close();
        }
    }

    DateUitil

    package com.maya.util;
    
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import org.springframework.stereotype.Component;
    
    public class DateUtil {
        
        public static Date getDate(){
            Calendar c=Calendar.getInstance();
            return c.getTime();
        }
        
        public static String formatDate(Date date,String format){
            String result="";
            SimpleDateFormat sdf=new SimpleDateFormat(format);
            if(date!=null){
                result=sdf.format(date);
            }
            return result;
        }
        public static Date formatString(String str,String format) throws Exception{
            SimpleDateFormat sdf=new SimpleDateFormat(format);
            return sdf.parse(str);
        }
    }
  • 相关阅读:
    [项目管理]如何写好项目验收材料
    [英语学习]英语高级口译证书考试 备查
    A1042 Shuffling Machine洗牌机器
    B1018锤子剪刀布
    B1012数字分类
    B1008数组元素循环右移问题
    B1046划拳
    B1026 程序运行时间
    B1016部分A+B
    B1011A+B和C
  • 原文地址:https://www.cnblogs.com/AnswerTheQuestion/p/6792422.html
Copyright © 2011-2022 走看看