工作中遇到的需求,菜鸟笔记
1.pom中导入所用依赖
<!--导出Excel-->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.0.3</version> </dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.0.3</version>
</dependency>
2.创建一个实体类来接收从数据库查出的数据
- 我用到了两个表中的数据,所以我把需要的字段提取出来写了一个类
- @ExcelTarget(value = “”)就标识该类要导出为Excel,或者导入Excel的接收对象。value值其标识作用,不重复即可,随便取。
- @Excel(name = “”)就是作用于类属性上,表示该属性对应Excel的哪一列,即name的值,当然还有其它属性。
package com.school.grid.business.domain.exam;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
/**
* @author song
* 导出成绩实体
*/
@Data
@ExcelTarget("exportGrades")
public class ExportGrades {
/**
* 学员名字
*/
@Excel(name = "学员名字")
private String userName;
/**
* 学员身份证号
*/
@Excel(name = "学员身份证号")
private String userIdCardNum;
/**
* 学员手机号
*/
@Excel(name = "学员手机号")
private String userId;
/**
* 考试科目
*/
@Excel(name = "考试科目")
private String paperManageSubject;
/**
* 学员考试成绩
*/
@Excel(name = "学员考试成绩")
private String userInfoPaperTtoalScore;
}
3.Controller层
/**
* 导出:姓名、身份证、电话、考试科目、成绩
* @param response
* @param
* @throws IOException
*/
@ApiOperation("成绩导出到excel")
@GetMapping("/export/grades")
public void detailsImport(HttpServletResponse response) throws IOException {
// 告诉浏览器用什么软件可以打开此文件
response.setHeader("content-Type", "application/vnd.ms-excel");
// 下载文件的默认名称
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("学员成绩表导出", StandardCharsets.UTF_8) + ".xls");
//编码
response.setCharacterEncoding("UTF-8");
//查询数据库要导出的数据
List<ExportGrades> list = certificateService.exportGrades();
//该方法需要三个参数:1、需要一个ExportParams2、要导出实体类3、导出的数据
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(),ExportGrades.class,list);
workbook.write(response.getOutputStream());
}
4.sql要查询的数据,我用的到两个表中的数据,所以我第二步就新建一个实体类来接收查询出来的数据