packagecn.monolog.diana.excel.controller;importcn.monolog.diana.excel.util.ExcelUtil;importcn.monolog.diana.excel.model.Person;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;importjava.io.OutputStream;importjava.net.URLEncoder;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;/*** 用于模拟导入导出组件
* created on 2019-05-21*/@Controller
@RequestMapping("/excel")public classExcelController {/*** 导出
*@paramresponse*/@RequestMapping(value= "/export")
@ResponseBodypublic void export(HttpServletResponse response) throwsParseException {//获取要导出的数据列表,在生产环境中要从数据库中查询,这里为了简化,自己创建
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Person p1= new Person(182, "张叁", "建筑", 25, simpleDateFormat.parse("2014-10-01"));
Person p2= new Person(205, "李肆", "结构", 30, simpleDateFormat.parse("2015-10-01"));
Person p3= new Person(311, "王伍", "给排水", 28, simpleDateFormat.parse("2016-10-01"));
Person p4= new Person(377, "赵陆", "电气", 31, simpleDateFormat.parse("2017-10-01"));
Person p5= new Person(505, "蒋柒", "暖通", 26, simpleDateFormat.parse("2018-10-01"));
List personList = new ArrayList<>();
personList.add(p1);
personList.add(p2);
personList.add(p3);
personList.add(p4);
personList.add(p5);//设置文件名、表单名、标题栏
String fileName = "员工信息表" + simpleDateFormat.format(new Date()) + ".xlsx";
String sheetname= "员工信息表";
String[] title= {"编号", "姓名", "专业", "年龄", "入职日期"};//声明表单内容
String[][] content = newString[personList.size()][title.length];//遍历要导出的数据列表,构造表单内容
for (int i=0 ; i
String[] row =content[i];//获取对应的数据实例
Person person =personList.get(i);//填充内容
row[0] =String.valueOf(person.getId());
row[1] =person.getName();
row[2] =person.getMajor();
row[3] =String.valueOf(person.getAge());
row[4] =simpleDateFormat.format(person.getEnrollmentTime());
}//获取文档
XSSFWorkbook workbook =ExcelUtil.getWorkbook(sheetname, title, content);//声明输出流
OutputStream outputStream = null;//响应到客户端
try{//设置响应头
response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8") );
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");//获取输出流
outputStream =response.getOutputStream();//用文档写输出流
workbook.write(outputStream);//刷新输出流
outputStream.flush();
}catch(Exception e) {
e.printStackTrace();
}finally{//关闭输出流
if (outputStream != null) {try{
outputStream.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
}