Excel导出

背景: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即可

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值