弱小和无知不是生存的障碍,傲慢才是
**

最近发现这个项目的开发者在语雀上面对这个项目有一个很详细的文档,比我写的详细多了。还有很多其他情况的,强烈建议在使用这个项目的时候先看这个文档
https://www.yuque.com/easyexcel

阿里巴巴开发的一个对excel进行操作的开源项目,使用起来很简单,下面介绍一下他

写入的操作

导入相关的jar包

注意,easyexcel是在阿帕奇的开源项目poi上面进行的一个项目,如果确认代码没有问题的话,但是报错了,可能是还需要引入poi的jar包(2.2.3在测试中不应用poi也能够运行,但是不排除其他的不能运行)
**

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>easyexcel</artifactId>
  4. <version>2.2.3</version>
  5. </dependency>

建立相关的实体类

  1. 在属性上面标注@ExcelProperty("xxx")
  2. 其中xxx为表头名
  3. @Data
  4. public class Entity {
  5. @ExcelProperty("姓名")
  6. private String name;
  7. @ExcelProperty("住址")
  8. private String address;
  9. }

编写主要的写入代码

  1. //下面的代码是要写入的excel的位置以及文件名
  2. String fileName = "D:\\excel.xlsx";
  3. //下面就是easyexcel将数据写入easyexcel的主要代码((getData()是一个返回list集合的方法)
  4. EasyExcel.write(fileName,Entity.class).sheet("信息表").doWrite(getData());

读取的操作

建立相关的实体类

  1. @Data
  2. public class Entity {
  3. @ExcelProperty(value = "姓名", index = 0)
  4. private String name;
  5. @ExcelProperty(value = "住址", index = 1)
  6. private String address;
  7. }

编写监听器

  1. //创建读取excel监听器
  2. public class ReaderListen extends AnalysisEventListener<Entity> {
  3. //创建list集合封装最终的数据
  4. List list = new ArrayList<Entity>();
  5. //一行一行去读取excle内容
  6. @Override
  7. public void invoke(Entity data, AnalysisContext context) {
  8. System.out.println("读取每行信息" + data);
  9. //data封装了每一行读取的数据
  10. list.add(data);
  11. }
  12. //读取excel表头信息
  13. @Override
  14. public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
  15. System.out.println("表头信息:"+headMap);
  16. }
  17. /**
  18. * 读取之后的操作
  19. * @param context
  20. */
  21. @Override
  22. public void doAfterAllAnalysed(AnalysisContext context) {
  23. }
  24. }

调用实现最终的读取

  1. String fileName = "D:\\excel.xlsx";
  2. EasyExcel.read(fileName, Entity.class, new ReaderListen()).sheet().doRead();

效果如下
表头信息:{0=姓名, 1=住址}
读取每行信息Entity(name=1, address=miner1)
读取每行信息Entity(name=2, address=miner2)
读取每行信息Entity(name=3, address=miner3)
读取每行信息Entity(name=4, address=miner4)
读取每行信息Entity(name=5, address=miner5)
读取每行信息Entity(name=6, address=miner6)
读取每行信息Entity(name=7, address=miner7)
读取每行信息Entity(name=8, address=miner8)
读取每行信息Entity(name=9, address=miner9)
读取每行信息Entity(name=10, address=miner10)