导出excel简练版

	/**
	 * 导出日志excel表
	 **/
	@SuppressWarnings("deprecation")
	@RequestMapping(value = "down")
	public void download(HttpServletRequest request, HttpServletResponse response,String excelTitle,String excelType,String excelTargetPerson)  {
		response.setContentType("application/vnd.ms-excel");
		response.setCharacterEncoding("utf-8");
		String fileName="消息日志表-"+DateUtil.formatDate(new Date())+".xls";
		fileName=encodeFilename(fileName, request);
		response.setHeader("Content-disposition", "attachment; filename=" 
				+ fileName);
		// 第一步,创建一个webbook,对应一个Excel文件
		HSSFWorkbook wb = new HSSFWorkbook();
		// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
		HSSFSheet sheet = wb.createSheet("日志报表");
		// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制int
		HSSFRow row = sheet.createRow((int) 0);
		// 第四步,创建单元格,并设置值表头 设置表头居中
		HSSFCellStyle style = wb.createCellStyle();
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式

		HSSFCell cell = row.createCell((int) 0);
		cell.setCellValue("系统编码");
		cell.setCellStyle(style);
		cell = row.createCell((int) 1);
		cell.setCellValue("消息标题");
		cell.setCellStyle(style);
		cell = row.createCell((int) 2);
		cell.setCellValue("消息摘要");
		cell.setCellStyle(style);
		cell = row.createCell((int) 3);
		cell.setCellValue("消息接收时间");
		cell.setCellStyle(style);
		cell = row.createCell((int) 4);
		cell.setCellValue("消息发送时间");
		cell.setCellStyle(style);
		cell = row.createCell((int) 5);
		cell.setCellValue("消息类型");
		cell.setCellStyle(style);
		cell = row.createCell((int) 6);
		cell.setCellValue("消息类型(第三方系统类型)");
		cell.setCellStyle(style);
		cell = row.createCell((int) 7);
		cell.setCellValue("目标人员账户");
		cell.setCellStyle(style);
		cell = row.createCell((int) 8);
		cell.setCellValue("日志类型");
		cell.setCellStyle(style);
		cell = row.createCell((int) 9);
		cell.setCellValue("日志详细");
		cell.setCellStyle(style);

		// 第五步,写入实体数据 实际应用中这些数据从数据库得到,
		@SuppressWarnings("unchecked")
		List<THmaiSendLog> list = wxLogService.getExcelList(excelTitle, excelTargetPerson, excelType);

		for (int i = 0; i < list.size(); i++) {
			row = sheet.createRow((int) i + 1);
			THmaiSendLog log = list.get(i);
			// 第四步,创建单元格,并设置值
			row.createCell((int) 0).setCellValue(log.getSystemCode());
			row.createCell((int) 1).setCellValue(log.getMsgTitle());
			row.createCell((int) 2).setCellValue(log.getMsgSummary());
			row.createCell((int) 3).setCellValue(log.getUpdateTime());
			row.createCell((int) 4).setCellValue(log.getCreateTime());
			row.createCell((int) 5).setCellValue(log.getMsgType()==null?0:log.getMsgType());
			row.createCell((int) 6).setCellValue(log.getMsgCategoryCode());
			row.createCell((int) 7).setCellValue(log.getTargetPersonAccount());
			row.createCell((int) 8).setCellValue(log.getLogType());
			row.createCell((int) 0).setCellValue(log.getLogDetail());

		}
		// 第六步,将文件存到指定位置
		try {

			wb.write(response.getOutputStream());

		} catch (Exception e) {
			LOGGER.error("{}", e);
		} finally {
			try {
				response.getOutputStream().close();
			} catch (IOException e) {
				LOGGER.error("{}", e);
			}
		}

	}

	/** 
     * 设置下载文件中文件的名称 
     *  
     * @param filename 
     * @param request 
     * @return 
     */  
    public static String encodeFilename(String filename, HttpServletRequest request) {  
      /** 
       * 获取客户端浏览器和操作系统信息 
       * 在IE浏览器中得到的是:User-Agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; Alexa Toolbar) 
       * 在Firefox中得到的是:User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.10) Gecko/20050717 Firefox/1.0.6 
       */  
      String agent = request.getHeader("USER-AGENT");  
      try {  
        if ((agent != null) && (-1 != agent.indexOf("MSIE"))) {  
          String newFileName = URLEncoder.encode(filename, "UTF-8");  
          newFileName = StringUtils.replace(newFileName, "+", "%20");  
          if (newFileName.length() > 150) {  
            newFileName = new String(filename.getBytes("GB2312"), "ISO8859-1");  
            newFileName = StringUtils.replace(newFileName, " ", "%20");  
          }  
          return newFileName;  
        }  
        if ((agent != null) && (-1 != agent.indexOf("Mozilla")))  
        {
            return MimeUtility.encodeText(filename, "UTF-8", "B");  

        }
    
        return filename;  
      } catch (Exception ex) {  
        return filename;  
      }  
    } 

猜你喜欢

转载自blog.csdn.net/chang384915878/article/details/80492372