资讯详情

Easy Excel的一个简单Demo,可直接用到项目中

EasyExcel简单Demo

    • EasyExcel
    • 依赖引入
    • 创建监听类
    • 与excel相对应的DTO
    • 调用读取
    • 读取xlsx格式

EasyExcel

官网地址:https://easyexcel.opensource.alibaba.com/ EasyExcel是一个基于Java简单,省内存读写Excel开源项目。支持读写百M,尽可能节省内存。Excel。 github地址:https://github.com/alibaba/easyexcel。

依赖引入

 <!-- easyExcel       -->         <dependency>             <groupId>com.alibaba</groupId>             <artifactId>easyexcel</artifactId>             <version>3.1.1</version>         </dependency>         <dependency>             <groupId>com.alibaba</groupId>             <artifactId>easyexcel-core</artifactId>             <version>3.1.1</version>         </dependency> 

创建监听类

  import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.util.ListUtils; import com.alibaba.fastjson.JSON; import com.longi.gsepro.dto.CellDataReadDemoData; import lombok.extern.slf4j.Slf4j;  
       
        import java
        .util
        .List
        ; 
        /** * 读取头 * * @author yzh */ @Slf4j 
        public 
        class 
        CellDataDemoHeadDataListener 
        implements 
        ReadListener
        <CellDataReadDemoData
        > 
        { 
          
        /** * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收 */ 
        private 
        static final int 
        BATCH_COUNT 
        = 
        5
        ; 
        private List
        <CellDataReadDemoData
        > cachedDataList 
        = ListUtils
        .
        newArrayListWithExpectedSize
        (
        BATCH_COUNT
        )
        ; @Override 
        public 
        void 
        invoke
        (
        CellDataReadDemoData data, AnalysisContext context
        ) 
        { 
          log
        .
        info
        (
        "解析到一条数据:{}"
        , 
        JSON
        .
        toJSONString
        (data
        )
        )
        ; cachedDataList
        .
        add
        (data
        )
        ; 
        if 
        (cachedDataList
        .
        size
        (
        ) 
        >= 
        BATCH_COUNT
        ) 
        { 
          
        saveData
        (
        )
        ; cachedDataList 
        = ListUtils
        .
        newArrayListWithExpectedSize
        (
        BATCH_COUNT
        )
        ; 
        } 
        } @Override 
        public 
        void 
        doAfterAllAnalysed
        (
        AnalysisContext context
        ) 
        { 
          
        saveData
        (
        )
        ; log
        .
        info
        (
        "所有数据解析完成!"
        )
        ; 
        } 
        /** * 加上存储数据库 */ 
        private 
        void 
        saveData
        (
        ) 
        { 
          log
        .
        info
        (
        "{}条数据,开始存储数据库!"
        , cachedDataList
        .
        size
        (
        )
        )
        ; log
        .
        info
        (
        "存储数据库成功!"
        )
        ; 
        } 
        } 
       

与excel相对应的DTO

import com.alibaba.excel.metadata.data.CellData;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;

/** * 基础数据类.这里的排序和excel里面的排序一致 * * @author Jiaju Zhuang **/
@Getter
@Setter
@EqualsAndHashCode
public class CellDataReadDemoData { 
        
    private CellData<String> string;
    // 这里注意 虽然是日期 但是 类型 存储的是number 因为excel 存储的就是number
    private CellData<Date> date;
    private CellData<Double> doubleData;
    // 这里并不一定能完美的获取 有些公式是依赖性的 可能会读不到 这个问题后续会修复
    private CellData<String> formulaValue;
}

调用读取

@Operation(description = "读取测试")
    @GetMapping("/read/excel")
    public void readTest(){ 
        
        String fileName = "D:\\test\\cellDataDemo.xlsx";
        System.out.println("执行");
        // 这里 需要指定读用哪个class去读,然后读取第一个sheet
        // 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去
        EasyExcel.read(fileName, CellDataReadDemoData.class, new CellDataDemoHeadDataListener()).sheet().doRead();
    }

读取xlsx格式

xlsx格式 [1]: https://easyexcel.opensource.alibaba.com/docs/current/

标签: 对射型光电传感器gse6

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台