Excel轻松操控:掌握EasyPoi的妙用技巧(二)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Excel轻松操控:掌握EasyPoi的妙用技巧

Excel轻松操控:掌握EasyPoi的妙用技巧(一)https://developer.aliyun.com/article/1480477


2.2.2.2 身份证实体类
/**
 * @ClassName: Card
 * @Description: 身份证
 * @author: 莫提
 * @date 2020/11/27 8:55
 * @Version: 1.0
 */
@ExcelTarget("card")
@Data
@AllArgsConstructor
public class Card implements Serializable {
    /**
     * 身份证号
     */
    @Excel(name = "身份证号码",width = 20.0,orderNum = "6")
    private String number;
    /**
     * 地址
     */
    @Excel(name = "住址",width = 50.0,orderNum = "7")
    private String address;
}
2.2.2.3 订单实体类
/**
 * @ClassName: Order
 * @Description: 订单
 * @author: 莫提
 * @date 2020/11/27 8:55
 * @Version: 1.0
 */
@ExcelTarget("orders")
@Data
@AllArgsConstructor
public class Order implements Serializable {
    /**
     * 订单编号
     */
    @Excel(name = "订单编号",orderNum = "8",width = 20.0)
    private String num;
    /**
     * 订单名称
     */
    @Excel(name = "订单名称",orderNum = "9",width = 20.0)
    private String name;
}
2.2.2.4 员工实体类
/**
 * @ClassName: Employee
 * @Description: 导入的员工实体
 * @author: 莫提
 * @date 2020/11/27 8:55
 * @Version: 1.0
 */
@ExcelTarget("employee")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Employee {
    /**
     * 用户 ID
     */
    @Excel(name = "编号",suffix = "号")
    private Integer id;
    /**
     * 姓名
     */
    @Excel(name = "姓名")
    private String name;
    /**
     * 性别
     */
    @Excel(name = "性别")
    private String sex;
    /**
     * 生日
     */
    @Excel(name = "生日",format = "yyyy-MM-dd HH:mm:ss")
    private Date birthday;
    /**
     * 用户状态:【1:正常】【0:封禁】
     */
    @Excel(name = "用户状态",replace = {"正常_1","封禁_0"})
    private Integer status;
}

2.2.3 创建测试类

2.2.3.1 导出测试
public class TestExport {
    /**
     * 获取全部用户
     */
    public List<User> getAllUsers(){
        List<User> list = new ArrayList<>();
        // 创建身份证信息
        Card card1 = new Card("11111","江西省南昌市");
        Card card2 = new Card("22222","四川省成都市");
        Card card3 = new Card("33333","河北省唐山市");
        // 创建订单信息
        Order order1 = new Order("1","泡面");
        Order order2 = new Order("2","外套");
        Order order3 = new Order("3","裤子");
        Order order4 = new Order("4","AJ1");
        Order order5 = new Order("5","NICK");
        Order order6 = new Order("6","笔记本");
        Order order7 = new Order("7","键盘");
        Order order8 = new Order("8","鼠标");
        list.add(User.builder()
                .id(1).name("张三").sex("男").status(0).password("123456").birthday(new Date())
                .hobbies(Arrays.asList("唱歌", "跳舞")).card(card1).orders(Arrays.asList(order1,order2))
                .photo("E:\\头像\\avatar.jpg")
                .build());
        list.add(User.builder()
                .id(2).name("李四").sex("男").status(1).password("123456").birthday(new Date())
                .hobbies(Arrays.asList("睡觉", "游戏")).card(card2).orders(Arrays.asList(order3,order4,order5))
                .photo("E:\\头像\\1.jpg")
                .build());
        list.add(User.builder()
                .id(3).name("丽丽").sex("女").status(0).password("123456").birthday(new Date())
                .hobbies(Arrays.asList("技术", "代码")).card(card3).orders(Arrays.asList(order6,order7,order8))
                .photo("E:\\头像\\2.jpg")
                .build());
        return list;
    }
    /**
     * 导出Excel表格
     */
    @Test
    public void testExport() throws IOException {
        // 获取全部用户
        List<User> users = getAllUsers();
        // 导出到文件
        FileOutputStream outputStream = new FileOutputStream("E:\\导出.xls");
        // 配置Excel文件信息
        ExportParams params = new ExportParams();
        params.setTitle("用户信息");
        params.setSheetName("用户信息1表");
        // 导出Excel表格
        Workbook workbook = ExcelExportUtil.exportExcel(params, User.class, users);
        workbook.write(outputStream);
        // 关闭资源
        outputStream.close();
        workbook.close();
    }
}
2.2.3.2 导入测试
public class TestImport {
    /**
     * 导入
     */
    @Test
    public void testImport() throws Exception {
        // 参数1:文件流
        FileInputStream stream = new FileInputStream("E:\\导入.xls");
        // 参数2:导入类型
        ImportParams params = new ImportParams();
        // 标题占用多少行
        params.setTitleRows(1);
        // 头部属性占用多少行
        params.setHeadRows(1);
        // 从指定的sheet的下标开始读取
        // params.setStartSheetIndex(1);
        // 读取sheet的数量,需要和上面的配合
        // params.setSheetNum(1);
        // 对Excle进行合法参数校验
        params.setImportFields(new String[]{"编号"});
        // 参数3:导出的数据结合
        List<Employee> employees = ExcelImportUtil.importExcel(stream, Employee.class, params);
        for (Employee employee : employees) {
            System.out.println("employee = " + employee);
        }
    }
}

2.3 SpringBoot整合EasyPOI

2.3.1 导入依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.20</version>
        </dependency>
        <!--引入Mybatis的ehCache的适配-->
        <dependency>
            <groupId>org.mybatis.caches</groupId>
            <artifactId>mybatis-ehcache</artifactId>
            <version>1.0.3</version>
        </dependency>
        <!--引入分页插件的依赖-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.10</version>
        </dependency>
        <!--引入EasyPOI-->
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>4.1.0</version>
        </dependency>
    </dependencies>

2.3.2 修改配置文件

# 配置应用相关
server:
  servlet:
    context-path: /
    session:
      timeout: 60m
  tomcat:
    uri-encoding: UTF-8
# 配置MyBatis相关
mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
spring:
  # 禁用ThymeLeaf缓存
  thymeleaf:
    cache: false
  # 配置数据源
  datasource:
    username: root
    password: 983934
    url: jdbc:mysql://127.0.0.1:3306/learn?serverTimezone=Hongkong&useAffectedRows=true
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB

2.3.3 创建数据表

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `user_name` varchar(50) DEFAULT NULL COMMENT '用户名',
  `work_age` int(2) DEFAULT NULL COMMENT '工龄',
  `sex` int(1) DEFAULT NULL COMMENT '性别',
  `birthday` date DEFAULT NULL COMMENT '生日',
  `dept_id` int(11) DEFAULT NULL COMMENT '部门ID',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=18433 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `department`
-- ----------------------------
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
  `dept_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门ID',
  `dept_name` varchar(20) DEFAULT NULL,
  `address` varchar(100) DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

2.3.4 逆向工程生成文件

  • 生成Mapper.Java
  • 生成Mapper.xml
  • 生成Service.java
  • 生成ServiceImpl.java
  • 生成Entity.java

生成基本的增删查改方法


Excel轻松操控:掌握EasyPoi的妙用技巧(三)https://developer.aliyun.com/article/1480481

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
Java Apache
EasyPOI操作Excel从零入门
我们不造轮子,只是轮子的搬运工。(其实最好是造轮子,造比别人好的轮子)开发中经常会遇到excel的处理,导入导出解析等等,java中比较流行的用poi,但是每次都要写大段工具类来搞定这事儿,此处推荐一个别人造好的轮子,EasyPOI封装了Apache的POI技术,实现了基本的Excel导入、导出从此不再为Excel操作头疼~
431 2
EasyPOI操作Excel从零入门
|
6月前
|
Java API Spring
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
569 1
|
7月前
|
Java 数据库 Maven
Excel轻松操控:掌握EasyPoi的妙用技巧(一)
Excel轻松操控:掌握EasyPoi的妙用技巧
432 4
|
7月前
|
前端开发
Excel轻松操控:掌握EasyPoi的妙用技巧(三)
Excel轻松操控:掌握EasyPoi的妙用技巧
89 1
|
Java Maven
【Java用法】使用EasyPoi导入与导出Excel文档的解决方案
【Java用法】使用EasyPoi导入与导出Excel文档的解决方案
365 0
使用EasyPoi导入Excel直接读流(不保存到本地文件)
使用EasyPoi导入Excel直接读流(不保存到本地文件)
138 0
|
存储 Java 数据挖掘
探索EasyPoi库:简化Excel操作的神器
在企业应用和数据处理中,Excel表格是常用的数据交换和存储方式。然而,处理和操作Excel表格可能是一项繁琐的任务。EasyPoi库作为一款优秀的Excel操作工具,可以帮助我们更轻松地进行Excel文件的读写、导入导出等操作。本文将深入探讨EasyPoi库的基本概念、特点,以及如何在实际应用中使用它进行Excel操作。
665 0
|
开发者
全网最全最简单使用easypoi导入导出Excel的操作手册(二)
今天做Excel导出时,发现了一款非常好用的POI框架EasyPoi,其 使用起来简洁明了。现在我们就来介绍下EasyPoi,首先感谢EasyPoi 的开发者 Lemur开源
8871 1
全网最全最简单使用easypoi导入导出Excel的操作手册(二)
|
Java Maven
SpringBoot如何用easyPOI导出excel文件
在工作中,经常需要我们用Java代码导出一些数据,保存在Excel中。这是非常实用的Excel导出功能,如果我们用SpringBoot结合EasyPOI框架,可以非常方便地实现这个功能。
261 0
|
Java Apache 数据库
全网最全最简单使用easypoi导入导出Excel的操作手册(一)
今天做Excel导出时,发现了一款非常好用的POI框架EasyPoi,其 使用起来简洁明了。现在我们就来介绍下EasyPoi,首先感谢EasyPoi 的开发者 Lemur开源
2985 0
全网最全最简单使用easypoi导入导出Excel的操作手册(一)