Excel模板:
{xxx}属于Map填充,key对应xxx,value放入值。
{.xxx}(这里有个点)属于List填充,xxx对应List的值名称,如果是List<实体类>,xxx则对应实体类的属性
前端:
使用a标记作为链接下载
<script>
function exportExcel(){//使用按钮点击进行下载
var demoReload=$('#param').val();
var url = '地址';
//创建一个a标签进行下载
var a = document.createElement('a');
a.href = url+'?param='+demoReload+'&excel_id=1';
$('body').append(a); // 修复firefox中无法触发click
a.click();
$(a).remove();
setTimeout(function(){
layer.msg("导出结束", {
icon:1,
time:500
},function(){
window.location.reload();
});
}, 2000);
}
</script>
后台:
controller只需要接收前端传来到参数,进行查询,放入List<实体类>里。
@RequestMapping("/exportExcelEmpPayrollAccount")
public void exportExcelEmpPayrollAccount(String param,Integer excel_id, HttpServletResponse response) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("payrollName", param);
//查询名称返回的结果
List<EmpPayrollAccountVO> list = baseService.queryExceltLedger(param);
excelTemplate.ExcelTemplate(excel_id, list, map, response);
}
public void ExcelTemplate(Integer excel_id,List list, Map<String,Object> map, HttpServletResponse response){
String name="";
switch(excel_id){
case 1:
name="模板名称.xlsx";
break;
case 2:
name="模板名称.xlsx";
break;
case 3:
name="模板名称.xlsx";
break;
case 4:
name="模板名称.xlsx";
break;
case 5:
name="模板名称.xlsx";
break;
}
String templateFileName=customConfig.getModelPath()+"\\"+name;//找到本地模板路径
ExcelWriter excelWriter=null;
try {
String s=name.replaceAll(".xlsx","");
String fileName = s + DateUtils.getDate();//导出的文件名称
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String filename = URLEncoder.encode(fileName, "utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + filename + ".xls");
//使用response.getOutputStream()下载,并使用项目下的模板填充
excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(templateFileName).build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
if(map!=null){
excelWriter.fill(map, writeSheet);//存入map
}
if(list!=null){
excelWriter.fill(list, writeSheet);//存入list
}
excelWriter.finish();
} catch (Exception e) {
// 重置response
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
R<String> r = new R<>();
r.setCode(CommonConstants.FAIL);
r.setMsg("导出失败!");
r.setData(e.getMessage());
try {
response.getWriter().println(r);
} catch (IOException e1) {
throw new NetException(500,"导出失败!");
}
throw new NetException(500,"导出失败!");
}
}
下载结果:
官方链接:EasyExcel