java 导出EXCEL

public void userExport(HttpServletResponse response) throws IOException {
String sheetName = "用户名单";//sheet名
String []title = new String[]{"account_id","person_id","native_first_name","native_middle_name","native_last_name","last_login_timestamp",
"creation_timestamp","system_profile","entitlement","action","Long Description"};//标题
String fileName = "userList.xls"; //文件名

List<Map<String, Object>> list = null;
try {
list = findAllUser();
createExcel(response,sheetName, title,fileName,list);
// exportExcel(response, fileName);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 查询所有的用户
* @return
*/
public List<Map<String, Object>> findAllUser() {
List<Map<String, Object>> list = new ArrayList<>();
List<User> userList = this.tcsUserExportDao.userExport();
for (User user : userList) {
List<Role> roleList = roleDao.findList(new Role(user));
logger.info("用户 "+user.getLoginName()+"拥有角色数 "+roleList.size());
for (Role role : roleList) {
logger.info("用户 "+user.getLoginName()+"的角色:"+role.getName());
List<String> menuIdList = roleDao.get(role.getId()).getMenuIdList();
for (String menuId : menuIdList) {
Menu menu = systemService.getMenu(menuId);
String menuName = menu.getName();
Map<String, Object> map = new HashMap<>();
map.put("loginName", user.getLoginName());
map.put("no", user.getNo());
map.put("name", user.getName());
map.put("loginDate", user.getLoginDate());
map.put("createDate", user.getCreateDate());
map.put("roleName", role.getName());
map.put("rolePermission",menuName);
map.put("permissionUser", menuName);
map.put("permissionDiscribe", "");
list.add(map);
}
}

}
logger.info("拼装list集合的大小为:"+list.size());
return list;
}

/**
* 创建EXCEL
*
* @param sheetName
* @param tirrle
* @param tcsUserExportList
*/
public void createExcel(HttpServletResponse response,String sheetName, String title[],String fileName,List<Map<String, Object>> list) {
logger.info("start create excel-->");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String[][] values = new String[list.size()][];
for (int i = 0; i < list.size(); i++) {
values[i] = new String[title.length];
// 将对象内容转换成string
Map<String, Object> map = list.get(i);
values[i][0] = String.valueOf(map.get("loginName"))==null?"":String.valueOf(map.get("loginName"));
values[i][1] = String.valueOf(map.get("no"))==null?"":String.valueOf(map.get("no"));
values[i][2] = String.valueOf(map.get("name"))==null?"":String.valueOf(map.get("name"));
values[i][3] = "";
values[i][4] = "";
values[i][5] = map.get("loginDate")==null?"":sdf.format(map.get("loginDate"));
values[i][6] = map.get("createDate")==null?"":sdf.format(map.get("createDate"));
values[i][7] = String.valueOf(map.get("roleName"))==null?"":String.valueOf(map.get("roleName"));
values[i][8] = String.valueOf(map.get("rolePermission"))==null?"":String.valueOf(map.get("rolePermission"));
values[i][9] = String.valueOf(map.get("permissionUser"))==null?"":String.valueOf(map.get("permissionUser"));
values[i][10] = String.valueOf(map.get("permissionDiscribe"))==null?"":String.valueOf(map.get("permissionDiscribe"));

}

// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
sheet.setDefaultColumnWidth(20);
sheet.setDefaultRowHeightInPoints(20);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow(0);
//设置字体
HSSFFont font = wb.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("宋体");
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
style.setFont(font);

HSSFCell cell = null;
// 创建标题
for (int i = 0; i < title.length; i++) {
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
// 创建内容
for (int i = 0; i < values.length; i++) {
row = sheet.createRow(i + 1);
for (int j = 0; j < values[i].length; j++) {
row.createCell(j).setCellValue(values[i][j]);
}
}


//设置列宽为自适应
sheet.autoSizeColumn((short)0); 
sheet.autoSizeColumn((short)1); 
sheet.autoSizeColumn((short)2); 
sheet.autoSizeColumn((short)3); 
sheet.autoSizeColumn((short)4); 
sheet.autoSizeColumn((short)5); 
sheet.autoSizeColumn((short)6); 
sheet.autoSizeColumn((short)7); 
sheet.autoSizeColumn((short)8); 
sheet.autoSizeColumn((short)9); 
sheet.autoSizeColumn((short)10);

try {
this.exportExcel(response, fileName);
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
logger.info("end create excel <--");
}

/**
* 导出EXCEL
*
* @param response
* @param fileName
* @throws IOException
*/
public void exportExcel(HttpServletResponse response, String fileName) {
try {
try {
fileName = new String(fileName.getBytes(),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
}
}

posted @ 2017-02-27 13:18  反轉  阅读(211)  评论(0编辑  收藏  举报