将数据库中的数据导出为excel表格——java学习笔记

最近我的项目增加了一个需求,需要将数据库中的数据导出到excel表格中,再下载下来。而生成Excel比较有名的框架有Apache poi等,网络上介绍其使用方法的文章也很多,但是我今天使用的是阿里出的easyexcel框架,我个人感觉使用起来更简单便捷, GitHub地址

导入maven依赖

        <dependency>
              <groupId>com.alibaba</groupId>
              <artifactId>easyexcel</artifactId>
              <version>2.1.1</version>
        </dependency>

导出excel

entity对象类

@Data
public class TabExcelProperty {
    //设置excel表头名称
    @ExcelProperty(value = "用户id",index = 0)
    private Integer id;
    @ExcelProperty(value = "用户名",index = 1)
    private String name;
    @ExcelProperty(value = "年龄",index = 2)
    private Integer age;
    @ExcelProperty(value = "性别",index = 3)
    private String sex;
    @ExcelProperty(value = "手机电话",index = 4)
    private String phone;

value表示列的名称,index表示是第几列。

数据库中表的数据

public void exportExcel(HttpServletResponse response) { //查询表中的数据 List<TabExcelProperty> list = exportMapper.getUser(); try { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 String fileName = URLEncoder.encode("测试文件", "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); EasyExcel.write(response.getOutputStream(), TabExcelProperty.class).sheet("表格1").doWrite(list); } catch (IOException e) { e.printStackTrace();

通过mapper的exportMapper.getUser()方法查询出数据表中的数据,然后用EasyExcel.write写入响应对象中。