SpringBoot导出execl表格

516 阅读1分钟

1、pom依赖

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>[4.1.12,)</version>
        </dependency>

2、工具类

/**
	 * 导出excel
	 */
	public static void downloadExcel(List<Map<String, Object>> list, HttpServletResponse response) throws IOException {
		String tempPath =System.getProperty("java.io.tmpdir") + IdUtil.fastSimpleUUID() + ".xlsx";
		File file = new File(tempPath);
		BigExcelWriter writer= ExcelUtil.getBigWriter(file);
		StyleSet styleSet = writer.getStyleSet();
		Workbook workbook = writer.getWorkbook();

		DataFormat format = workbook.createDataFormat();
		CellStyle style = styleSet.getCellStyle();

		style.setDataFormat(format.getFormat("@"));
		writer.setStyleSet(styleSet);
		writer.write(list, true);
		//response为HttpServletResponse对象
		response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
		//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
		response.setHeader("Content-Disposition","attachment;filename=file.xlsx");

		ServletOutputStream out=response.getOutputStream();

		// 终止后删除临时文件
		file.deleteOnExit();

		writer.flush(out, true);

		//此处记得关闭输出Servlet流
		IoUtil.close(out);
	}

3、实现类

@Override
	public void download(List<AirForceActive> list, HttpServletResponse response) {
		List<Map<String, Object>> list = new ArrayList<>();
		for (AirForceActive airForceActive : downloadExcel) {
			Map<String,Object> map = new LinkedHashMap<>();
			map.put("身份证号", airForceActive.getAirportId());
			map.put("姓名", airForceActive.getExeState());
			map.put("年龄", airForceActive.getIssueTime());
			map.put("性别", airForceActive.getExeState());
			map.put("户籍", airForceActive.getExeState());
			list.add(map);
		}
		try {
			FilesUtil.downloadExcel(list, response);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}