第一步引入依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency><!--xls--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>
第二步创建实体类和Excel对应
@Data public class DemoData { //设置Excel表头的名称,第几列 @ExcelProperty(value = "学生编号",index = 0) private Integer sno; @ExcelProperty(value = "学生姓名",index = 1) private String sname; }
在实体类的属性上加上注解,说明Excel里的第一行的字段名,以及列数
实现写操作,将一个集合写到一个Excel文件里
public class TestEasyExcel {
public static void main(String[] args) {
//实现Excel的写操作
//设置写入文件夹地址和Excel文件名称
String filename = "D:\\Desktop\\write.xlsx";
//调用easyExcel的方法实现写操作
//第一个参数文件的路径,第二个参数实体类的class
EasyExcel.write(filename, DemoData.class).sheet("学生列表").doWrite(getData());
}
//创建一个方法返回list集合
private static List<DemoData> getData() {
List<DemoData> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
DemoData data = new DemoData();
data.setSno(i);
data.setSname("xxx"+i);
list.add(data);
}
return list;
}
}
读操作
创建监听器,继承一个类重写一些方法
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import java.util.Map;
public class ExcelListener extends AnalysisEventListener<DemoData> {
//一行一行读取Excel内容
@Override
public void invoke(DemoData data, AnalysisContext analysisContext) {
System.out.println("***"+data);
}
//读取表头内容
public void invokeHeadMap(Map<Integer,String> headMap, AnalysisContext context) {
System.out.println("表头"+headMap);
}
//读取完成之后
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
//实现Excel读操作
String filename = "D:\\Desktop\\write.xlsx";
EasyExcel.read(filename, DemoData.class, new ExcelListener()).sheet().doRead();
sqlyog导入数据在table表单的导入里。
GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具
官方工具地址
CSDN他人使用文档