新接触的项目有很多的Excel导出,试过好几个,这里给大家推荐一下,
utils类
public static void downloadExcel(List<Map<String, Object>> list, HttpServletResponse response) throws IOException {
String tempPath = System.getProperty("java.io.tmpdir") + IdUtil.fastSimpleUUID() + ".xlsx";
File file = new File(tempPath);
BigExcelWriter writer = ExcelUtil.getBigWriter(file);
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(list, true);
//response为HttpServletResponse对象
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
if (null ==response.getHeader("Content-Disposition")){
response.setHeader("Content-Disposition", "attachment;filename=file.xlsx");
}
ServletOutputStream out = response.getOutputStream();
// 终止后删除临时文件
file.deleteOnExit();
writer.flush(out, true);
//此处记得关闭输出Servlet流
IoUtil.close(out);
}
直接复制到类中调用
xxxxxEntity为需要导出的list。
List<Map<String, Object>> list = new ArrayList<>();
try {
for (xxxxxEntity list : school) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("学校名称", null == listExport.getData273() ? "无" : listExport.getData273());
map.put("学校地址", null == listExport.getData285() ? "无" : listExport.getData285());
map.put("负责人", null == listExport.getData290() ? "无" : listExport.getData290());
map.put("创建时间", null == listExport.getBeginTime() ? "无" : listExport.getBeginTime());
map.put("人数", null == listExport.getData38() ? "无" : listExport.getData38());
list.add(map);
}
response.setHeader("Content-Disposition", "attachment;filename=" + new String(("学校详情数据").getBytes(), "iso-8859-1") + ".xlsx");
FileUtil.downloadExcel(list, response);
Result.ok("成功");
} catch (Exception e) {
e.printStackTrace();
}