欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

将数据从数据库导出到 excel 表 - Java 学习笔记

最编程 2024-04-11 19:16:44
...

最近我的项目增加了一个需求,需要将数据库中的数据导出到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表示是第几列。

数据库中表的数据

在这里插入图片描述

Service类

@Service
public class ExportServiceImpl implements ExportService{

    @Autowired
    ExportMapper exportMapper;

    @Override
    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写入响应对象中。


在这里插入图片描述

然后Controller直接调用就行。

结果:

在这里插入图片描述