天天看点

summer-excel实现Excel数据读取

前言

summer-excel是一款基于对象关系映射稳定、便捷、可定制的Excel数据读取工具,基于POI打造支持。利用注解实现Excel数据关系映射,可定制解析策略,以满足不同业务场景的需要。

文章目录

    • JavaDoc
    • 数据类型
      • 使用示例
        • Maven
        • java 对象注解
      • 执行Excel读取
        • Excel数据内容
      • 输出结果
    • 自定义数据类型转换
        • 方式一 实现tk.jfree.summer.excel.type.TypeHandler
        • (推荐)方式二 继承tk.jfree.summer.excel.type.AbstractTypeHandler

JavaDoc

https://apidoc.gitee.com/tojava/summer-excel

运行环境 JDK1.8

数据类型

JavaType ExcelType
java.lang.String CellType.STRING
java.lang.Boolean CellType.BOOLEAN
java.lang.Integer CellType.NUMERIC
java.lang.Date CellType.NUMERIC
java.lang.Enum CellType.STRING

使用示例

Maven

<dependency>
  <groupId>tk.jfree.summer</groupId>
  <artifactId>summer-excel</artifactId>
  <version>0.2.0</version>
</dependency>
           

java 对象注解

@Getter
@Setter
@ToString
@Table(sheet = "日志信息", first = 1)
public class Log {
    @Column(name = "A", notes = "账号")
    private String username;
    @Column(name = "B", notes = "时间", format = "yyyy-MM-dd hh:mm:ss", typeHandler = DateTimeTypeHandler.class)
    private java.util.Date gmtCreate;
    @Column(name = "C", notes = "操作")
    private String type;
}
           

执行Excel读取

ExcelHelper.builder(Log.class)
             		.read(new FileInputStream(FileUtilTest.getWebRootPath("log.xlsx")))
                    .getData().stream().forEach(System.out::println);
           

Excel数据内容

summer-excel实现Excel数据读取

输出结果

Log(username=admin, gmtCreate=Wed Dec 12 12:12:12 CST 2018, type=登录)
Log(username=zhangsan, gmtCreate=Mon Dec 24 19:00:20 CST 2018, type=查询)
           

自定义数据类型转换

summer-excel支持自定义数据类型转换

方式一 实现tk.jfree.summer.excel.type.TypeHandler

public class DateTimeTypeHandler implements TypeHandler<java.util.Date> {
    private final Field field;

    public DateTimeTypeHandler(Field field) {
        this.field = field;
    }

    @Override
    public Date get(Cell cell) throws Exception{
          //TODO
        return null;
    }
}

           

(推荐)方式二 继承tk.jfree.summer.excel.type.AbstractTypeHandler

public class DateTimeTypeHandler extends AbstractTypeHandler<java.util.Date> {

    public DateTimeTypeHandler(Field field) {
        super(field);
    }

    @Override
    public Date get(Cell cell) throws Exception{
          //TODO
        return null;
    }
}

           

相关代码https://gitee.com/tojava/jfree-example/tree/master/jfree-excel

继续阅读