頁面用戶信息導出Excel

/**
 * 公共組件,導出Excel表格數據方法<p>
 * 使用方法: 數據爲List<Object>類型,注意當中object的屬性理論上必須爲java基本數據類型
 * 固然也支持像日期這種格式,即完整支持數據庫中字段類型
 * @author pery
 * @param className     數據模型Object的類完整名稱
 *                      ,eg:com.swust.kelab.Department
 * @param propertyName  數據模型類的屬性對應的列名,
 *                       如「depaId」對應列表「機構id「,
 *                       未指定列名的屬性不會被導出
 * @param tableName     導出的excel中的表名稱
 * @param objectList    要導出的數據集
 * @return              成功返回true,失敗返回false;
 */
public static boolean exportExcel(String className, Map propertyName, String tableName, List<? extends Object> objectList, HttpServletResponse resp) throws IOException {
    resp.setCharacterEncoding("UTF-8");
    resp.setContentType("application/x-download");
    long now = System.currentTimeMillis();
    String filedisplay = "導出用戶信息"+now+".xls";
    filedisplay = URLEncoder.encode(filedisplay, "UTF-8");
    resp.addHeader("Content-Disposition", "attachment;filename="+ filedisplay);

    HSSFWorkbook wbook = new HSSFWorkbook();
    HSSFSheet wsheet = wbook.createSheet(tableName); //表名
    HSSFCellStyle cellStyle=getStyle(wbook);
    // 設置Excel表頭
    HSSFRow excelTitle = wsheet.createRow(0);
    excelTitle.setHeightInPoints(22);
    if(objectList.size()<=0){
        wsheet.autoSizeColumn(0);
        HSSFCell titleCell = excelTitle.createCell(0);
        titleCell.setCellValue("對不起,沒有可用數據導出");
        titleCell.setCellStyle(cellStyle);
    }
    Class c = null;
    try {
        c = Class.forName(className);
    }
    catch (ClassNotFoundException e1) {
        System.out.println("傳入反射用到的類名字有誤");
        e1.printStackTrace();
        return false;
    }
    java.lang.reflect.Field[] flds = c.getDeclaredFields();
    int j=0;
    for (int i = 0; i < flds.length; i++) {
        String columName=flds[i].getName();
        if(propertyName.containsKey(columName)){
            wsheet.setColumnWidth(j+1, (int)(100*35.7));
            HSSFCell titleCell = excelTitle.createCell(j++);
            titleCell.setCellValue((String)propertyName.get(columName));
            titleCell.setCellStyle(cellStyle);
        }
    }
    for (int i = 0; i < objectList.size(); i++) {
        Object obj = objectList.get(i);
        HSSFRow row = wsheet.createRow(i + 1);
        int k=0;
        for (j = 0; j < flds.length; j++) {
            String columName=flds[j].getName();
            if(!propertyName.containsKey(columName)){
                continue;
            }
            HSSFCell hssfCell = row.createCell(k++);
            try {
                flds[j].setAccessible(true);
                Object t = flds[j].get(obj);
                if(t instanceof Date){
                    t = dateFormat.format(t);
                }
                if(t!=null){
                    hssfCell.setCellValue(String.valueOf(t));
                }
            } catch (IllegalArgumentException e) {
                System.out.println("該字段不是基本數據格式字段");
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                System.out.println("非法訪問");
                e.printStackTrace();
            }
        }
    }
    try {
        OutputStream out = resp.getOutputStream();
        wbook.write(out);
        out.flush();
        out.close();
    } catch (FileNotFoundException e) {
        System.out.println("文件路徑錯誤");
        e.printStackTrace();
    } catch (IOException e) {
        System.out.println("I/O錯誤");
        e.printStackTrace();
    }
    return true;
}

controllerjava

public Object export(String username, String name, Integer state, HttpServletRequest request, HttpServletResponse response){
    List<AdminEntity> adminEntityList = new ArrayList<>();
    Map<String, Object> url = new HashMap<String, Object>();
    ResultEntity resultEntity = new ResultEntity();
    Integer status = 1;
    String message = null;
    AdminWebserviceService adminWebserviceService = new AdminWebserviceService();
    Admin admin = adminWebserviceService.getAdminPort();
    SoapHandler.handleSoap(admin);
   try {
        String operate = "導出用戶信息";
        addLog(operate, request);
        Map<String, Object> map = new HashMap<String, Object>();

        map.put("id","用戶ID");
        map.put("username","登陸名");
        map.put("name","真實姓名");
        map.put("departmentTitle","部門名稱");
        map.put("roleTitle","角色");
        map.put("mobile","電話");
        map.put("email","郵箱");
        map.put("createState","狀態");
        map.put("createAdmin","建立人");
        map.put("createTime","建立時間");

        List<CaAdmin> caAdminList = admin.getList2(username,name,state);
        for (CaAdmin caAdmin : caAdminList) {
            AdminEntity adminEntity = new AdminEntity();

            CaRole caRole = admin.findRolesByUsername(caAdmin.getUsername());
            CaDepartment caDepartment = admin.findDepartmentByDepartmentId(caAdmin.getDepartmentId());
            //tools.converJavaBean 將class2中的屬性值賦值給class1
            tools.converJavaBean(adminEntity, caAdmin);
            adminEntity.setRoleTitle(caRole.getTitle());
            adminEntity.setDepartmentTitle(caDepartment.getTitle());
            if(caAdmin.getState()==1){
                adminEntity.setCreateState("啓用");
            }else
                adminEntity.setCreateState("禁用");
            adminEntityList.add(adminEntity);

        }
        //ExportAsExcel.exportExcel 導出到Excel
        Boolean a= ExportAsExcel.exportExcel("com.xxx.entity.AdminEntity",map,"用戶信息表",adminEntityList,response);

        if(a){
            //url.put("url",file);
        }else{
            status = 0;
            message = "服務器錯誤";
        }

    } catch (Exception e) {
        status = 0;
        message = "服務器錯誤";
    }
    resultEntity.setStatus(status);


    resultEntity.setObj(url);
    resultEntity.setMessage(message);
    return resultEntity;
}

結果輸出一個文件流數據庫

相關文章
相關標籤/搜索