背景:Excel导出,以前都是有模板,这次没有模板,记录一下。
@GetMapping("/excelDownLoad")
public @ResponseBody void excelDownLoad(CompanyUser companyUser,HttpServletResponse response){
List<CompanyUser> list =signService.getCompanyUserList( companyUser, null, null);
List<Company> companyList = companyMapper.select(new Company());
Map<Integer,String> companyMap = new HashMap<>();
for(Company company : companyList){
companyMap.put(company.getId(),company.getName());
}
//创建一个HSSFBook 对应一个Excel
HSSFWorkbook wb = new HSSFWorkbook();
//创建一个sheet
HSSFSheet sheet = wb.createSheet();
//创建一行
HSSFRow row = sheet.createRow(0);
HSSFCellStyle style = wb.createCellStyle();
HSSFCell cell = null;
//写入头
for(int i=0;i<EXCEL_HEAD.length;i++){
cell = row.createCell(i);
cell.setCellValue(EXCEL_HEAD[i]);
cell.setCellStyle(style);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//从第二行开始写数据
for(int i=0;i<list.size();i++){
row = sheet.createRow(i + 1);
row.createCell(0).setCellValue(list.get(i).getUsername());
row.createCell(1).setCellValue(list.get(i).getIdcard());
row.createCell(2).setCellValue(sdf.format(list.get(i).getSignTime()));
row.createCell(3).setCellValue(companyMap.get(list.get(i).getCompanyId()));
row.createCell(4).setCellValue(list.get(i).getOrgId());
}
String fileName = "签到数据导出"+sdf.format(new Date())+".xls";
try{
setResponseHeader(response,fileName);
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
}catch (Exception e){
e.printStackTrace();
}
}
//发送响应流方法
public void setResponseHeader(HttpServletResponse response, String fileName) {
try {
try {
fileName = new String(fileName.getBytes(),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
log.info("fileName="+fileName);
e.printStackTrace();
}
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
}
}
以上是用到的内容记录。可以将导出功能放到util里面去。毕竟很常用。
前台使用window.location.href=url即可