下载

	// 遥测excel下载
	@PostMapping("/getExcel")
	public ResponseEntity getExcel(HttpServletResponse response,HttpServletRequest req,
			@RequestBody HashMap map ) {
		

		TelemetryAndInstructDate tandD = historicalDataService.getHistoricalTmData(map);

		@SuppressWarnings("resource")
		HSSFWorkbook workbook = new HSSFWorkbook();
		HSSFSheet sheet = workbook.createSheet();		
		int rowNum = 0;

		// 自定义列标题
		String[] headers = {"序号", "时间" ,"遥测帧"};
		HSSFRow row = sheet.createRow(rowNum);
//
//		HSSFCellStyle setBorder = workbook.createCellStyle();		
//		setBorder.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中				
//		//字体
//		HSSFFont font = workbook.createFont();
//		font.setFontName("黑体");
//		font.setFontHeightInPoints((short) 16);//设置字体大小
//		font.setBold(true);
//		setBorder.setFont(font);
		
		
		for (int i = 0; i < headers.length; i++) {
			HSSFCell cell = row.createCell(i);
			HSSFRichTextString text = new HSSFRichTextString(headers[i]);
			cell.setCellValue(text);

		}
		// 获取下载数据
		for (TelemetryFlowment tem : tandD.getTelemetry()) {
			rowNum++;

			HSSFRow row1 = sheet.createRow(rowNum);
			row1.createCell(0).setCellValue(rowNum);
			row1.createCell(1).setCellValue(tem.getTime());
			row1.createCell(2).setCellValue(tem.getTelemetryData());
			
		}
	
		try {
			
			String fileName = new SimpleDateFormat("yyyy-MM-dd").format(new Date())+"_遥测.xls";

			
			//处理浏览器中文编码
			String userAgent = req.getHeader("User-Agent");
			if (userAgent != null) {
				if (userAgent.contains("msie") || userAgent.contains("like Gecko") || userAgent.contains("Trident") || userAgent.contains("Edge")) {
					//IE
					fileName = URLEncoder.encode(fileName, "UTF-8");	
					 response.setCharacterEncoding("UTF-8");
				}else {
					//非IE浏览器处理
					fileName = new String((fileName).getBytes("UTF-8"), "ISO-8859-1");
					response.setCharacterEncoding("ISO-8859-1");					
				}
			 }else {
				 	fileName = URLEncoder.encode(fileName, "UTF-8");
		            response.setCharacterEncoding("UTF-8");
				}
	
			// 下载后的excel名称可以为中文
			response.reset();
			response.setContentType("application/x-download charset=UTF-8");
		    response.setHeader("Content-disposition", "attachment;filename="+fileName);
			OutputStream out = response.getOutputStream();
			workbook.write(out);
			
			if (out != null) {
				out.flush();
				out.close();
			}
			return null;

		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity(LayuiPageResult.result(false, 201, "下载失败!", null, 0), HttpStatus.OK);

	}

 

你可能感兴趣的:(下载)