EasyExcel使用(一) [Converter如何处理以及如何让它生效]

文章前文名词解析:

  1. EasyExcel是关于Excel的操作封装。

  2. Converter是关于EasyExcel在导入数据或者导出数据遇到复杂数据类型的时候的自我定义的处理方式。

  3. Entity(实体)指的是在导入导出的实体操作数据对象。

  4. 注解指的是在数据导入导出的过程中将复杂数据类型导出处理方式和自定义或者已定义的Converter的连接方式。

程序设计规则:

   为什么写这个呢?因为不同的公司拥有不同的设计规则。相同的事情具有不同的处理方式,但会得到相同的结果。

   在本篇文章中:坚持一个原则:不破坏Entity(实体)的完整性。简单来说就是不能使用注解的方式去解决它的导入导出问题。

   那么不实用注解如何让它生效以及自我复杂格式,绑定处理方式呢?答案其实EasyExcel就已经准备了方法。

EasyExcel专用对象了解:

EasyExcelFactory : ExcelWriterBuilder,ExcelReaderBuilder.
ExcelWriterBuilder : ExcelWriter(简单来说就是当前的写入文件对象)
ExcelReaderBuilder : ExcelReader(简单来说就是当前的写入文件对象)
WriteSheet :  excel文件的一个Sheet空间。简单来说就是一个工作表

  EasyExcel如何让Converter生效:

    让Converter生效的方式有以下几种:

      1.、使用注解在实体对象上面,百度一大堆

      2、 首先找到EasyExcel读取存在Converter的方法,然后继承并添加新的Converter方法。

     3、 就是在EasyExcel的读写对象里面进行注册Converter对象。

  我使用的就是第三种,前面两种,第一种就是破坏了设计原则,第二种就是实现起来的最终效果太.....

   第三种非常简单,就一行代码就好了。

写入: 
       ExcelWriterBuilder write.registerConverter(new LocalDateConverter());
      好多的Converter不就要写好多个?封装就好了,这个对象只需要一个OutputStream对象就好了
读取: 
      采用Map<Integer,Object>对象接收,然后根据不同的数据类型采用不同的Converter。
      使用的时候就调用实体传入,封装的解析方法解析得到完整对象即可。
       

 简单版署一个读入的解析内容得到List配置文件类:

/**
 * <p>
 * 通过反射机制,获取对象的注解内容,实现通过注解内容进行赋值.
 * </p>
 *
 * @author ZJW
 * @since 2020-12-25 15:26
 */
public class ReflexByApiModelProperty {

    /**
     * <p>
     *     调换excel导入的头部对应数据.
     * </p>
     * @param noExchangeHead excel读取的表头数据
     */
    public Map<String, Integer> exchangeMap(Map<Integer, String> noExchangeHead) {}

    /**
     * <p>
     *     根据Excel文件头的表头内容获取表头值(List),再根据.
     * </p>
     * @param exchangeHead 表头:列值
     * @param valueMap     列值:数据值
     * @param target       解析对象
     */
    public <T> T sortRules(Class<T> target, Map<String, Integer> exchangeHead, Map<Integer, Object> valueMap){}

}

 简单版署一个写入的方法配置文件类:

/**
 * <p>
 *     easyExcel数据写入对象数据封装.
 * </p>
 * @author ZJW
 * @since 2021/03/30
 */
public class ExcelWriterConfig {

    public static ExcelWriterBuilder getExcelWriterBuilder(OutputStream outputStream) {
        ExcelWriterBuilder write = null;
        try {
            // 数据导出
            write = EasyExcel.write(outputStream);
            // LocalDate 解析对象
            write.registerConverter(new LocalDateConverter());
            // LocalDateTime 解析对象
            write.registerConverter(new LocalDateTimeConverter());
            // TimeStamp 解析对象
            write.registerConverter(new TimestampConverter());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return write;
    }

    public static ExcelWriter setWithTemplate(OutputStream outputStream, InputStream inputStream) {
        return getExcelWriterBuilder(outputStream).withTemplate(inputStream).build();
    }

    public static WriteSheet setWriteSheet(Integer sheetNo, String sheetName) {
        return EasyExcel.writerSheet(sheetNo, sheetName).build();
    }

}

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
EasyExcel Converter 是一个 Java 库,用于将 Excel 文件转换为 Java 对象或将 Java 对象转换为 Excel 文件。您可以按以下步骤使用 EasyExcel Converter: 1. 添加 EasyExcel 依赖项到您的项目中。您可以在 Maven 或 Gradle 中添加以下依赖项: Maven: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> </dependency> ``` Gradle: ```groovy compile group: 'com.alibaba', name: 'easyexcel', version: '2.2.10' ``` 2. 创建 Java 类,用于映射 Excel 文件中的数据。 3. 使用 EasyExcel 的 `EasyExcel.read()` 方法读取 Excel 文件,并将其映射到您的 Java 类。 4. 使用 EasyExcel 的 `EasyExcel.write()` 方法将 Java 对象写入 Excel 文件。 下面是一个简单的示例,演示如何将 Excel 文件中的数据映射到 Java 对象中: ```java public class User { private String name; private Integer age; // getters and setters } public class ExcelReader { public static void main(String[] args) { String fileName = "user.xlsx"; List<User> userList = EasyExcel.read(fileName).head(User.class).sheet().doReadSync(); userList.forEach(user -> System.out.println(user.getName() + " - " + user.getAge())); } } ``` 在这个示例中,我们创建了一个 `User` 类,用于映射 Excel 文件中的数据。然后,我们使用 EasyExcel 的 `EasyExcel.read()` 方法读取 Excel 文件,并将其映射到 `User` 类型的列表中。最后,我们遍历列表并输出每个用户的姓名和年龄。 您可以在 EasyExcel 的官方文档中找到更多示例和用法:https://www.yuque.com/easyexcel/doc/easyexcel

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值