zoukankan      html  css  js  c++  java
  • 导出Excel报表

    导出excel报表

    添加依赖

    		<!-- poi -->
    		<dependency>
    			<groupId>org.apache.poi</groupId>
    			<artifactId>poi-ooxml</artifactId>
    			<version>4.0.1</version>
    		</dependency>
    

    编写接口服务

    	/**
    	 * 生成用户信息Excel文件
    	 * @param pageRequest 要导出的分页查询参数
    	 * @return
    	 */
    	File createUserExcelFile(PageRequest pageRequest);
    

    服务实现

    
    public static File createUserExcelFile(List<?> records) {
    		if (records == null) {
    			records = new ArrayList<>();
    		}
        	/**
        	*XSSFWorkbook : 这个类有读写Microsoft Excel和OpenOffice的XML文件的格式.xls或.xlsx的方法。它与MS-Office版本2007或更高版本兼容
        	*/
    		Workbook workbook = new XSSFWorkbook();
    		Sheet sheet = workbook.createSheet();//创建一个XSSFSheet本工作簿,将其添加到表,并返回高层表示。
    		Row row0 = sheet.createRow(0);
    		int columnIndex = 0;
    		row0.createCell(columnIndex).setCellValue("No");
    		row0.createCell(++columnIndex).setCellValue("ID");
    		row0.createCell(++columnIndex).setCellValue("用户名");
    		row0.createCell(++columnIndex).setCellValue("昵称");
    		row0.createCell(++columnIndex).setCellValue("机构");
    		row0.createCell(++columnIndex).setCellValue("角色");
    		row0.createCell(++columnIndex).setCellValue("邮箱");
    		row0.createCell(++columnIndex).setCellValue("手机号");
    		row0.createCell(++columnIndex).setCellValue("状态");
    		row0.createCell(++columnIndex).setCellValue("头像");
    		row0.createCell(++columnIndex).setCellValue("创建人");
    		row0.createCell(++columnIndex).setCellValue("创建时间");
    		row0.createCell(++columnIndex).setCellValue("最后更新人");
    		row0.createCell(++columnIndex).setCellValue("最后更新时间");
    		for (int i = 0; i < records.size(); i++) {
    			SysUser user = (SysUser) records.get(i);
    			Row row = sheet.createRow(i + 1);
    			for (int j = 0; j < columnIndex + 1; j++) {
    				row.createCell(j);
    			}
    			columnIndex = 0;
    			row.getCell(columnIndex).setCellValue(i + 1);
    			row.getCell(++columnIndex).setCellValue(user.getId());
    			row.getCell(++columnIndex).setCellValue(user.getName());
    			row.getCell(++columnIndex).setCellValue(user.getNickName());
    			row.getCell(++columnIndex).setCellValue(user.getDeptName());
    			row.getCell(++columnIndex).setCellValue(user.getRoleNames());
    			row.getCell(++columnIndex).setCellValue(user.getEmail());
    			row.getCell(++columnIndex).setCellValue(user.getStatus());
    			row.getCell(++columnIndex).setCellValue(user.getAvatar());
    			row.getCell(++columnIndex).setCellValue(user.getCreateBy());
    			row.getCell(++columnIndex).setCellValue(DateTimeUtils.getDateTime(user.getCreateTime()));
    			row.getCell(++columnIndex).setCellValue(user.getLastUpdateBy());
    			row.getCell(++columnIndex).setCellValue(DateTimeUtils.getDateTime(user.getLastUpdateTime()));
    		}
    		return PoiUtils.createExcelFile(workbook, "download_user");
    	}
    

    编写控制器

    @PostMapping(value = "/exportExcelUser")
    	public void exportExcelUser(@RequestBody PageRequest pageRequest, HttpServletResponse res) {
    		File file = sysUserService.createUserExcelFile(pageRequest);
    		FileUtils.downloadFile(res, file, file.getName());
    	}
    

    工具类代码

    PoiUtils

    public class PoiUtils {
    
    	/**
    	 * 生成Excel文件
    	 * @param workbook
    	 * @param fileName
    	 * @return
    	 */
    	public static File createExcelFile(Workbook workbook, String fileName) {
    		OutputStream stream = null;
    		File file = null;
    		try {
    			file = File.createTempFile(fileName, ".xlsx");
    			stream = new FileOutputStream(file.getAbsoluteFile());
    			workbook.write(stream);
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			IOUtils.closeQuietly(workbook);
    			IOUtils.closeQuietly(stream);
    		}
    		return file;
    	}
    }
    
    

    FileUtils

    /**
     * 文件相关操作
     * @author Louis
     * @date Jan 14, 2019
     */
    public class FileUtils {
    
    	/**
    	 * 下载文件
    	 * @param response
    	 * @param file
    	 * @param newFileName
    	 */
    	public static void downloadFile(HttpServletResponse response, File file, String newFileName) {
    		try {
    			response.setHeader("Content-Disposition", "attachment; filename=" + new String(newFileName.getBytes("ISO-8859-1"), "UTF-8"));
    			BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
    			InputStream is = new FileInputStream(file.getAbsolutePath());
    			BufferedInputStream bis = new BufferedInputStream(is);
    			int length = 0;
    			byte[] temp = new byte[1 * 1024 * 10];
    			while ((length = bis.read(temp)) != -1) {
    				bos.write(temp, 0, length);
    			}
    			bos.flush();
    			bis.close();
    			bos.close();
    			is.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    
    
  • 相关阅读:
    003-代码补全,运行,调试
    002-创建基本项目-新项目、空项目、已有项目
    001-使用idea开发环境安装部署,npm工具栏,脚本运行
    0601-Zuul构建API Gateway-API gateway简介、基础使用、路由配置、负载配置
    005-TCP传输控制协议
    0505-Hystrix保护应用-Turbine集群状态监控
    0504-Hystrix保护应用-Hystrix Dashboard的使用与常见问题总结
    0503-Hystrix保护应用-feign的hystrix支持
    004-java类保存优化
    0502-Hystrix保护应用-简介,使用,健康指标等
  • 原文地址:https://www.cnblogs.com/mankaixin/p/13981851.html
Copyright © 2011-2022 走看看