Java工具类-easyexcel表格操作

文章介绍了如何使用阿里巴巴的EasyExcel库来处理老版本的xls文件,相比Hutool,EasyExcel更适合处理这类文件且内存占用更少。内容包括创建VO实体类映射表格列,定义监听器进行数据读写操作,并提供了读取和写入Excel文件的示例代码。
摘要由CSDN通过智能技术生成

引入依赖,虽然hutool也有表格处理的工具类,但是不支持老版本的xls文件,而阿里开发的easyexcel则支持老版本文件,并且easyexcel是轻量级省内存的表格文档操作工具。

<!-- Hutool工具 -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.3.10</version>
</dependency>

<!-- Hutool文档操作 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.0.5</version>
</dependency>

1.假设表格内容有三列:数量、规格、代号,则写一个VO实体类,用字段对应表格的每一列

import com.alibaba.excel.annotation.ExcelProperty;

public class BearAlgoExcelVO {

    @ExcelProperty("数量")//对应表格中的数量那一列
    private double num1;

    @ExcelProperty(index = 0)//如果列没有标题,可以直接用下标来指定该列,下标从0开始
    private double num2;

    @ExcelProperty(index = 1)
    private double num3;
    
    //省略get set方法
}

2.写一个监听器,用来执行读写后的操作

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import java.util.List;

public class BearAlgoExcelListener extends AnalysisEventListener<BearAlgoExcelVO> {

    private List data;
    public BearAlgoExcelListener(List data){
        this.data=data;
    }
    
    /**
     * 每一行读取完成后回调此方法,并将读取的数据封装为参数传入
     * 只需要将每次读取的内容保存下来即可
     * @param code
     * @param analysisContext
     */
    @Override
    public void invoke(BearAlgoExcelVO bearAlgoExcelVO, AnalysisContext analysisContext) {
        //System.out.println(bearAlgoExcelVO);
        data.add(bearAlgoExcelVO);
    }

    /**
     * 执行完毕调用
     * @param analysisContext
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }
}

3.读取测试

import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class EsaylExcelMain {

    public static void main(String[] args) {
        File file=new File("C:\\Users\\test\\Desktop\\BearingData\\train_all\\故障\\擦伤\\内圈擦伤\\内圈擦伤_轻度\\2019年09月25日17时45分24秒data节点D318B134地址10.csv");

        List data=new ArrayList();
        EasyExcel.read(file, BearAlgoExcelVO.class, new BearAlgoExcelListener(data)).sheet().doRead();
        System.out.println(JSON.toJSONString(data));
    }

}
//打印:[{"num1":0.502208,"num2":0.501843,"num3":0.494563},{"num1":0.502208,"num2":0.501843,"num3":0.494563}...]

写出到表格

public class EsaylExcelMain {

    public static void main(String[] args) {
        List<BearAlgoExcelVO> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            BearAlgoExcelVO code = new BearAlgoExcelVO();
            code.setName("臭垃圾:"+i);
            code.setType("厨余垃圾");
            code.setNum(i+3568);
            list.add(code);
        }
        
        EasyExcel.write("D:/testexcel.xlsx",BearAlgoExcelVO.class).sheet("test01").doWrite(list)
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值