public JsonResponse export(HttpServletRequest request, HttpServletResponse response, LoginModel loginModel) {
JsonResponse jr = new JsonResponse();
jr.setSuc(JsonResponse.FAIL);
//loginModel.setOperateResult("");
List<Login> dataList = loginSevice.queryAll(loginModel);
// 第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook workbook = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = workbook.createSheet("登陆日志");
// 第三步,在sheet中添加表头第0行
HSSFRow row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = workbook.createCellStyle();
// 创建一个居中格
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
row.createCell(0).setCellValue("执行者");
row.createCell(1).setCellValue("用户名");//I18NUtil.getMessage(request, "employee.label.employee.id")
row.createCell(2).setCellValue("操作结果");
row.createCell(3).setCellValue("请求IP");
row.createCell(4).setCellValue("执行时间");
//设置表头居中
row.getCell(0).setCellStyle(style);
row.getCell(1).setCellStyle(style);
row.getCell(2).setCellStyle(style);
row.getCell(3).setCellStyle(style);
row.getCell(4).setCellStyle(style);
//设置列宽
sheet.setColumnWidth(0, 4000);
sheet.setColumnWidth(1, 4000);
sheet.setColumnWidth(2, 3000);
sheet.setColumnWidth(3, 4000);
sheet.setColumnWidth(4, 6000);
//格式化日期 pattern
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 第五步,写入实体数据
for (int i = 0; i < dataList.size(); i++) {
row = sheet.createRow(i + 1);
// 第六步,创建单元格,并设置值
row.createCell(0).setCellValue(dataList.get(i).getName() == null? "": dataList.get(i).getName());
row.createCell(1).setCellValue(dataList.get(i).getUserName());
row.createCell(2).setCellValue(dataList.get(i).getOperateResult());
row.createCell(3).setCellValue(dataList.get(i).getIpAddr());
row.createCell(4).setCellValue(format.format(dataList.get(i).getLoginTime()));
}
String downFileName = new String("登陆日志.xls");
try {
//若不进行编码在IE下会乱码
downFileName = URLEncoder.encode(downFileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
// 清空response
response.reset();
response.setContentType("application/msexcel");//设置生成的文件类型
response.setCharacterEncoding("UTF-8");//设置文件头编码方式和文件名
response.setHeader("Content-Disposition", "attachment; filename=" + new String(downFileName.getBytes("utf-8"), "ISO8859-1"));
OutputStream os=response.getOutputStream();
workbook.write(os);
os.flush();
os.close();
} catch (IOException e) {
Admin admin = CurrentAdminUtil.getCurrentAdmin(request);
e.printStackTrace();
LOGGER.error(admin.getUsername() + "[" + admin.getName() + "]导出登陆日志报表失败", e);
return jr;
}
jr.setSuc(JsonResponse.SUCCESS);
jr.setRet("");
return jr;
}
PS:使用Ajax请求流下载失效,使用表单提交流下载正常,原因未知
使用POI生成Excel并进行流下载(不需在服务器上保存)
最新推荐文章于 2024-09-03 20:52:56 发布