一.介绍

工作时,我们有时候会遇见这样的场景,老板要求我们在数据库中统计一些数据,并以excel表格的方式发送给老板。这时,我们想到的一种方法是通过navicat中查询结果转化为excel的功能,具体操作如下:

  • 点击导出结果
    在这里插入图片描述
  • 导出当前结果
    在这里插入图片描述
  • 选择对应的文件导出即可
    在这里插入图片描述
    使用该方法的前提:通过sql语句可以直接得到我们需要的目标数据

那么我们通过sql语句不能拿到我们想要的数据,而是需要进一步在java中进行进一步计算,这时我们就无法使用navicat了。这时我们使用的就是java中的excel操作:easyExcel
本文介绍springboot中如何使用easyExcel

二.使用

1.依赖引入

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

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

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.17</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>

2. 定义实体类

我们想要得到的excel表格数据一定有某种关系对应,类似于sql查询结果的关系对应。这里我们需要定义这种数据类型,如下:

@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class ExcelUser {

    @ExcelProperty("用户ID1")
    private String id;
    @ExcelProperty("用户昵称")
    private String nickname;
    @ExcelProperty("发布活动数量")
    private String count;
    @ExcelProperty("所属城市")
    private String city;
    @ExcelProperty("入驻时间")
    private String created_at;
    @ExcelProperty("上次登陆时间")
    private String updated_at;
    @ExcelProperty("联系手机")
    private String phone;
    @ExcelProperty("联系微信")
    private String wechat;
    @ExcelProperty("latitude")
    private Double latitude;
    @ExcelProperty("longitude")
    private Double longitude;
}

@ExcelProperty注解标识了excel表中数据首行(字段)与数据的对应关系

3.将数据库数据转化为excel数据

 public void putExcel() throws IOException {
	
			//1.定义excel表格的存放位置
         String filename = "D:\\user.xls";

		//2.获得经过计算过后的数据,并封装到我们的excel实体对象ExcelUser中 
        List<ExcelUser> list=userService.selectMessageToExcel();
        
        //3.创建一个ExcelWriter对象,通过建造者模式,指定这个ExcelWriter对象针对的文件和Excl实体对象
        ExcelWriter excelWriter=EasyExcel.write(filename,ExcelUser.class).build();

		//4. 创建一个工作簿,并指定名字
        WriteSheet writeSheet = EasyExcel.writerSheet("信息").build();

		//5.将list写入到工作簿中(并且工作簿与excel表绑定)
        excelWriter.write(list,writeSheet);
        }

4.得到对应的表格

这样我们就可以在对应的路径下得到表格了。
我们在再表格进行进一步的美化,就可以交给老板了。

三.总结

大量数据转化成excel的方法

  1. 在navicat中查询到对应的数据后,直接通过功能按钮,转化成excel。
    适用场景:可以通过sql语句直接得到我们想要的数据
  2. 在java中适用easyExcel。
    适用场景:需要通过复杂的代码逻辑才能得到数据结果。

easyExcel不仅可以生成excel表格,还可以导入excel表格,解析excel中的数据并存到数据库。更多可以参考官方网站

参考:easyExcel官网

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐