EASYEXCEL(一)

1.读取excel

读监听器

复制代码
@Slf4j
public class StudentReadListener extends AnalysisEventListener<Student> {
    // 每读一样,会调用该invoke方法一次
    @Override
    public void invoke(Student data, AnalysisContext context) {
        System.out.println("data = " + data);
         log.info(data + "保存成功");
    }

    // 全部读完之后,会调用该方法
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // TODO......
    }
}

映射实体类

复制代码
@Data
@AllArgsConstructor
@NoArgsConstructor
@ColumnWidth(20)
@ToString
public class Student {

    /**
     * id
     */
    @ExcelProperty(value = "编号",index = 0)
    //@ExcelIgnore
    private String id;
    /**
     * 学生姓名
     */
    @ExcelProperty(value = "学生姓名", index = 1)
    //@ColumnWidth(30)
    private String name;
    /**
     * 学生性别
     */
    @ExcelProperty(value = "学生性别", index = 2)
    private String gender;

    /**
     * 学生出生日期
     */
    @ExcelProperty(value = "学生出生日期", index = 3)
    //@ColumnWidth(20)
    private Date birthday;

读取

复制代码
public class StudentReadDemo {
    public static void main(String[] args) throws FileNotFoundException {
        // 读取文件,读取完之后会自动关闭
        /*
            pathName        文件路径;"C:\\Users\\wjg\\Desktop\\学员信息.xlsx"
            head            每行数据对应的实体;Student.class
            readListener    读监听器,每读一样就会调用一次该监听器的invoke方法

            sheet方法参数: 工作表的顺序号(从0开始)或者工作表的名字,不传默认为0
        */
        // 封装工作簿对象
        ExcelReaderBuilder workBook = EasyExcel.read
                ("C:\\Users\\wjg\\Desktop\\学员信息.xlsx", Student.class, new StudentReadListener());

        // 封装工作表
        ExcelReaderSheetBuilder sheet1 = workBook.sheet();
        // 读取
        sheet1.doRead();
    }

2.写入excel

复制代码
public class StudentWriteDemo {
    public static void main(String[] args) {

        List<Student> students = initData();
        /*
            String pathName 写入文件的路径
            Class head      写入文件的对象类型
            默认写入到07的xlsx中,如果想要写入xls,可以指定类型(待验证)
         */
        ExcelWriterBuilder workBook = EasyExcel.write("C:\\Users\\wjg\\Desktop\\学员信息.xlsx", Student.class);

        // sheet方法参数: 工作表的顺序号(从0开始)或者工作表的名字
        workBook.sheet().doWrite(students);
    }

    private static List<Student> initData() {
        ArrayList<Student> students = new ArrayList<Student>();
        Student data = new Student();
        for (int i = 0; i < 10; i++) {
            data.setName("学号0" + i);
            data.setBirthday(new Date());
            data.setGender("男");

            data.setId(String.valueOf(i));
            students.add(data);
        }
        return students;
    }
}
相关推荐
无限进步_几秒前
面试题 02.02. 返回倒数第 k 个节点 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
夕除4 分钟前
js--7
java
布谷歌9 分钟前
面试题整理
java·开发语言
2401_8590490814 分钟前
git submodule update --init --recursive无法拉取解决
前端·chrome·git
爬山算法16 分钟前
Hibernate(74)如何在CQRS架构中使用Hibernate?
java·架构·hibernate
j4455661118 分钟前
C++中的职责链模式高级应用
开发语言·c++·算法
Hello World . .20 分钟前
数据结构:栈和队列
c语言·开发语言·数据结构·vim
jjjava2.025 分钟前
深入解析Set与Map的奥秘
java·开发语言
白宇横流学长30 分钟前
基于Java的火车票订票系统的设计与开发
java·开发语言
黎雁·泠崖30 分钟前
Java核心基础API学习总结:从Object到包装类的核心知识体系
java·开发语言·学习