Js代码
var a;
var b;
//a,b为入参(可无入参)
window.open("/toExcel?a="+a+"&b="+b,"_black");
Controller代码
@GetMapping("/toExcel")
public void getExcel(HttpServletRequest request, HttpServletResponse response){
excelService.getExcel(request, response);
}
Service代码
public void getExcel(HttpServletRequest request, HttpServletResponse response) {
log.info("开始导出到Excel");
try{
//获取前端传入的参数
String a = request.getParameter("a");
String b = request.getParameter("b");
//自定义方法获取要打印的数据(示例为学生数据)
Student students = getStudents(a,b);
//创建Excel文档
HSSFWorkbook wb = new HSSFWorkbook();
//创建表单sheet
HSSFSheet sheet = wb.createSheet("sheet1");
//表头(第一行)
HSSFRow row0 = sheet.createRow(0);
row0.createCell(0).setCellValue("学号");
row0.createCell(1).setCellValue("姓名");
row0.createCell(2).setCellValue("性别");
row0.createCell(3).setCellValue("年龄");
Integer index = 1;
//遍历获取到的学生数据
Iterator<Student> iterator = students.iterator();
while (iterator.hasNext()) {
Student stu = iterator.next();
//创建行(从第二行开始)
HSSFRow rowIndex = sheet.createRow(index);
index++;
//填入一行的数据
rowIndex.createCell(0).setCellValue(stu.getNo());
rowIndex.createCell(1).setCellValue(stu.getName());
rowIndex.createCell(2).setCellValue(stu.getSex());
rowIndex.createCell(3).setCellValue(stu.getAge());
}
response.setContentType("application/x-msdownload");
//定义打印出来后的报表名
response.setHeader("Content-Disposition", "attachment; filename=" + new String(("学生名单").getBytes("GBK"), "iso8859-1") + ".xls");
OutputStream os = response.getOutputStream();
wb.write(os);
os.close();
}catch (Exception e){
log.error("导出到Excel失败",e);
}
log.info("导出到Excel成功");
}