Excel导出(HSSFWorkbook )

来源:互联网 发布:淘宝最低价最新规则 编辑:程序博客网 时间:2024/05/18 01:04
    
private void outPut(List<SmUser> smUserList,HttpServletResponse response) {      String[][] user = {                {"用户名", "username"}, {"姓名", "name"},{"性别", "gender"},            {"邮箱", "email"}, {"工号", "jobnumber"}, {"生日", "birthday"},            {"描述", "description"}, {"用户头像", "imageurl"},  {"创建时间", "createtime"},            {"备忘", "remark"}, {"排序号", "sortorder"}, {"用户类型", "usertype"},             {"单位", "unit"}, {"部门", "dept"}, {"角色", "role"}, {"账号类型", "accounttype"}, {"账号有效期", "existtime"}};      try {         HSSFWorkbook workbook = new HSSFWorkbook();         HSSFSheet sheet=workbook.createSheet("SmUser");         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");         // 标题行         buildHead(sheet, user, workbook);//设置表头标题         HSSFRow row = null;//行         HSSFCell cell=null;//列         SmUser smUser = null;         for(int i=0;i<smUserList.size();i++) {            row=sheet.createRow(i+1);//设置行(由于第0行表头已设置,所以从第一行开始设置值)            smUser = smUserList.get(i);            for(int j=0;j<user.length;j++){               Method method = getColumnValue(SmUser.class, user[j][1]);//获取字段名及get方法               Object o = method.invoke(smUser, null);//通过get方法取值               if (o instanceof Date) {                  o = formatter.format(o);//日期时间需要转换               }               cell = row.createCell(j);//设置列               cell.setCellValue(o == null ? "" : String.valueOf(o)); //设置值  //用三元运算符判断o是否为空             }         }         responseSet(response, "用户信息" + TimeUtil.nowTime());//设置Excel名称及文件保存位置         OutputStream os = response.getOutputStream();         workbook.write(os);//写入到Excel中         os.flush();         os.close();      } catch (Exception e) {         e.printStackTrace();      }   }
public static void buildHead(HSSFSheet sheet,                             String[][] headArr, HSSFWorkbook workbook) {    // 标题行    HSSFRow headRow = sheet.createRow(0);    for (int i = 0; i < headArr.length; i++) {        HSSFCellStyle cellStyle = getHeadCellStyle(workbook);        HSSFCell cell = headRow.createCell(i);        cell.setCellType(HSSFCell.CELL_TYPE_STRING);        cell.setCellValue(headArr[i][0]);        cell.setCellStyle(cellStyle);    }}

public static Method getColumnValue(Class<?> cla,                                    String column) throws NoSuchMethodException {    String methodStr = "get" + StringUtil.toUpperCaseFirst(column);    Method method = cla.getMethod(methodStr, null);    return method;}

/** * 字符串首字母大写 *  * @param str * @return */public static String toUpperCaseFirst(String str) {   StringBuilder sb = new StringBuilder(str);   sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));   return sb.toString();}

public static void responseSet(HttpServletResponse response,                               String title) throws UnsupportedEncodingException {    response.reset();    response.setCharacterEncoding("utf-8");    response.setContentType("application/vnd.ms-excel;charset=utf-8");    response.setHeader("Content-Disposition", "attachment;filename="            + URLEncoder.encode(title + ".xls", "UTF-8"));}