1. easyexcel的优点
//封装工作簿对象
ExcelReaderBuilder workBook = EasyExcel.read
("d:\\杭州黑马在线202003班学员信息.xls", Student.class, new StudentReadListener());
// 封装工作表
ExcelReaderSheetBuilder sheet1 = workBook.sheet();
// 读取
sheet1.doRead();
//继承监听器的接口AnalysisEventListener,重写里面的两个方法invoke以及doAfterAllAnalysed
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......
}
}
1.2.写操作
public class StudentWriteDemo {
public static void main(String[] args) {
List<Student> students = initData();
ExcelWriterBuilder workBook = EasyExcel.write("d:\\杭州黑马学员表.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("男");
students.add(data);
}
return students;
}
}
- 基于SAX的事件处理机制,适合处理大文件,不会造成内存溢出。
- 定制导出,可以根据不同的参数导出不同的Excel。
- 支持sheet分页。
- 提供了更加灵活的表头,支持表头合并。
- 性能更好,尤其是大数据量的情况下。
- 可以兼容老版本的poi,无需修改原来的代码。
1.1读操作
- 首先创建一个导出数据的实体类,导入依赖
- 调用
EasyExcel
的API
读取的 Excel
文件的实体类,主要是操作流的应用 - 读取Excel的监听器,用于处理读取产生的数据
- 先创建一个实体类
- 写入文件
2. easyexcel的缺点
- 无法直接导出带有颜色的Excel。
- 无法直接导出Excel的公式。
- 导出数据时,必须先进行查询,然后才能导出。
3. poi的优点
- 功能比较齐全,可以支持各种操作,如读取、写入、加密、解密等。
- 支持的Excel版本比较多,可以支持95、97、2007等不同版本的Excel。
- 社区比较完善,有完整的文档和示例。
4. poi的缺点
- 在处理大数据量时,内存占用比较大,可能会出现内存溢出的情况。
- 写入Excel的速度比较慢。
- 对于一些复杂的Excel样式,处理起来比较困难。