• springboot+easyExcel


    一.介绍

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

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

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

    二.使用

    1.依赖引入

     <dependency>
                <groupId>com.alibabagroupId>
                <artifactId>easyexcelartifactId>
                <version>2.1.6version>
            dependency>
    
            <dependency>
                <groupId>org.apache.poigroupId>
                <artifactId>poi-ooxmlartifactId>
                <version>3.17version>
            dependency>
    
            <dependency>
                <groupId>org.apache.poigroupId>
                <artifactId>poi-ooxml-schemasartifactId>
                <version>3.17version>
            dependency>
    
            <dependency>
                <groupId>org.apache.poigroupId>
                <artifactId>poiartifactId>
                <version>3.17version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    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;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    @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);
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4.得到对应的表格

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

    三.总结

    大量数据转化成excel的方法

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

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

    参考:easyExcel官网

  • 相关阅读:
    深入浅出PyTorch中的nn.CrossEntropyLoss
    云计算(Docker)
    Github一夜爆火的阿里术小册究竟有什么魅力?才能引大家趋之若鹜
    RabbitMQ常见操作命令
    spark中生成时间序列数据的函数stack和sequence
    Nginx显示failed (13: Permission denied)
    大神方案|如何重写一个万行代码的类文件
    WPF_某SDK的使用心得_一定要区分32位和64位
    【数据结构】——二叉树的基础知识
    分析和排查系统故障
  • 原文地址:https://blog.csdn.net/qq_56769991/article/details/126294975