EasyExcel 读写操作

 

EasyExcel 是是阿里巴巴开源的一个 excel 处理框架 , 基于Java 语言开发、操作简单, 节省内存 , 占用内存较少的原因是在解析 Excel 时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析

 EasyExcel 对 Excel 的写操作


1. pom 中引入相关依赖

<dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.1.1</version>
        </dependency>
</dependencies>

2. 创建一个学生类 Stu

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Stu {
//  index: 每行记录的学生编号从0开始
//  value: 表格每一列的列名
    @ExcelProperty(value = "学号",index = 0)
    private int sno;

    @ExcelProperty(value = "姓名",index = 1)
    private String sname;

}

3. 创建一个实现 Excel 写操作的类 Stu_write

public class Stu_write {
//    定义一个学生集合, 用于保存学生信息
    private static List<Stu> SaveStuData() {
        ArrayList<Stu> stuList = new ArrayList<>();
//    模拟向表格中添加学生数据,创建10个学生对象
        for (int i = 0; i < 10; i++) {
            Stu stu = new Stu();
            stu.setSno(i);
            stu.setSname("孙悟空" + i);
            stuList.add(stu);
        }
        return stuList;
    }



//    实现 EasyExcel 写操作
    public static void main(String[] args) {
//    定义一个要写入的路径 (这里我选择写到 C盘桌面上)
        String fileName = "C:\\Users\\Administrator\\Desktop\\学生列表.xlsx";
/*      使用 com.alibaba.excel 依赖包提供的 EasyExcel 的 write方法
        参数 :
        1. fileName:写入文件名
        2. Stu.class:要将哪个类?写进去
        3. sheet参数:就是说你当前写到表格中的那张表叫什么名字?如果不传入,默认就是sheet1
        doWrite(xxx): 该方法中传入xxx :你要写到表格的数据是xxx(对象..集合...)
*/
        EasyExcel.write(fileName, Stu.class).sheet("学生列表").doWrite(SaveStuData());
    }

}

运行程序 , 执行效果

1. 桌面上生成了一个表格文件

 2. 打开文件

 

 

EasyExcel 对 Excel 的读操作


读取操作的监听器

//  创建读取操作的监听器,继承AnalysisEventListener抽象类,重写此类中的读取数据的方法
public class Stu_Listener extends AnalysisEventListener<Stu> {
    //    创建一个list集合,封装学生数据
    List<Stu> list = new ArrayList<Stu>();

    //    invoke方法:逐行的读取 excle表格中的内容
    @Override
    public void invoke(Stu stu, AnalysisContext analysisContext) {
        System.out.println("正在读取数据" + stu);
        list.add(stu);
    }

    //    读取 excel 完成后,执行此方法
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        System.out.println("读取完成后执行此方法");
    }

//    调用真正实现读取的方法
    public static void main(String[] args) throws Exception {
//     指定读取路径,从哪个地方的excel读取,这里我选择的还是桌面位置上的excel中读取数据
        String fileName="C:\\Users\\Administrator\\Desktop\\学生列表.xlsx";
//     这里 指定读取哪个class,然后读取第一个sheet 文件流会自动关闭
//     创建读取组件对象 传入一个监听器对象(ReadListener<T>类型的) 此处就是我们创建的Stu_Listener
        EasyExcel.read(fileName, Stu.class, new Stu_Listener()).sheet().doRead();
    }
}

运行程序 , 执行效果

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值