第一步、导入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel-core</artifactId>
<version>3.2.1</version>
<exclusions>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
</exclusion>
</exclusions>
</dependency>
以上的导入依赖是导入EasyExcel库的核心模块,并排除了一些与Apache POI相关的依赖项。通过排除这些依赖,可能是因为EasyExcel库本身已经包含了所需的功能,避免了冲突或重复依赖的问题。
第二步、在你需要导出数据的实体类的字段加上注解
ExcelProperty
注解用于匹配excel
和实体类字段之间的关系。
@Data
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@ExcelProperty(value = "id", index = 0)
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ExcelProperty(value = "名称", index = 1)
@ApiModelProperty(value = "名称")
@TableField("name")
private String name;
}
如果所有字段都不加index的话,默认index会从0开始,之后字段的index就从0开始递增,依次类推。index决定了该字段数据会赋值给Excel中的第几列。
如果不想按这个顺序把数据写到Excel当中。那么就可以手动设置index的值,把字段写到想要的列中去。
第三步、数据的导出
public AjaxResult exportTemplate(@RequestParam String filePath) {
List<Object> values=new ArrayList<>();
//想导出什么数据,values就放什么数据 object是你的实体类
try {
EasyExcel.write(filePath, Object.class).sheet("sheet名称").doWrite(values);
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error("导出数据失败");
}
return AjaxResult.success("导出数据成功");
}
数据的导入
public List<Object> importFile(MultipartFile file) throws Exception {
List<Object> list=new ArrayList<>();
InputStream inputStream = file.getInputStream();
try {
list = EasyExcel.read(inputStream).head(Object.class).sheet(0).doReadSync();
} catch (Exception e) {
System.out.println("导入Excel文件出现异常:" + e.getMessage());
}
return list;
}