- 导出:写操作,将数据库中的内容写入到excel表格中。
- 导入:读操作,将excel表格中的内容读出来,插入到数据库中,一般都是先将excel表格中的内容使用流,读到集合(list)中,然后再对集合进行遍历插入。
(2)实体类(模板类)com.alibaba fastjson 1.2.62 com.alibaba easyexcel 2.2.0-beta2 joda-time joda-time 2.10.1 junit junit 4.12 org.projectlombok lombok RELEASE compile
字段上加注解就行:
@ExcelProperty("表中字段名")
@ExcelIgnore:要忽略的字段。
EasyExcel.write(文件名, 模板类.class).sheet("表名").doWrite(list集合);
2. 读(导入)
(1)监听器
// 1.继承AnalysisEventListener public class DemoDataListener extends AnalysisEventListener(2)读{ // 2.一行一行的读取内容(list集合),但是不读表头。 @Override public void invoke(DemoData data, AnalysisContext context) { //一般在这里进行导入集合操作(在项目中,一般所有业务操作,都在这个方法中进行) } // 3.读表头内容 @Override public void invokeHeadMap(Map headMap, AnalysisContext context) { //将表头信息导入集合(实际中不需要) } // 4.所有都读取完了,执行这个方法 @Override public void doAfterAllAnalysed(AnalysisContext context) { //一般在这里进行插入数据库操作(当然这只是我个人认为的,在尚医通项目和在线教育项目中,这个项目都是空的,插入数据库的操作在invoke()方法中进行。而且invokeHeadMap方法也用不到,因为不需要读取表头信息,读取时导入,数据库中有字段(表头),不需要再导) //狂神讲的课中用到了这个方法,可以具体去看一下他的笔记 } }
//EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead(); EasyExcel.read(文件名, 模板类.class, 监听器对象).sheet().doRead();
更多详细信息,可以看尚医通的笔记(语雀)。
https://www.yuque.com/docs/share/3df0e6c8-54d4-4b4c-9c2b-dc188e47345c?# 《EasyExcel》
与EasyExcel相比,这个要难得多,比如:没有注解的使用,要导入表头部分需要手动导入。但是可以对POI-Excel进行封装,例如若依项目,就是对POI-Excel做了封装,让POI-Excel也可以使用注解,用法难度也不高,很。。可恶,被他装到了。但是我认为,还是使用EasyExcel简单方便一些(毕竟是阿里的)。
如果要问若依项目是如何对poi-excel进行封装的,那就是反射机制。不得不说封装的真大啊!
下面是若依如何获取表头的代码:
public List


