EasyExcle的基本使用
1、导入
com.alibaba
easyexcel
3.0.5
2、读取
//读取文件
//创建ExcleReaderBuilder实例
ExcelReaderBuilder readerBuilder = EasyExcel.read();
//获取要读取的文件对象
readerBuilder.file("C:\\Users\\521\\Desktop\\sys_user.xls");
//指定sheet:不指定,会默认读取全部的sheet
readerBuilder.sheet("sys_user");
//自动关闭输入流
readerBuilder.autoCloseStream(true);
//设置excle文件格式 .xls
readerBuilder.excelType(ExcelTypeEnum.XLS);
//注册一个监听器:将每一行读取的结果,进行解析
readerBuilder.registerReadListener(new AnalysisEventListener
可以通过泛型指定数据类型,Map集合。
//读取文件
//创建ExcleReaderBuilder实例
ExcelReaderBuilder readerBuilder = EasyExcel.read();
//获取要读取的文件对象
readerBuilder.file("C:\\Users\\521\\Desktop\\sys_user.xls");
//指定sheet:不指定,会默认读取全部的sheet
readerBuilder.sheet("sys_user");
//自动关闭输入流
readerBuilder.autoCloseStream(true);
//设置excle文件格式 .xls
readerBuilder.excelType(ExcelTypeEnum.XLS);
//注册一个监听器:将每一行读取的结果,进行解析
readerBuilder.registerReadListener(new AnalysisEventListener
实际开发中,对上述代码进行简化
List
映射成指定的对象
映射指定的实体类:
/**
* 主键
*/
@ExcelProperty("id") //指定读取excle的列名
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 用户名
*/
@ExcelProperty("user_name")
private String userName;
解析excle文件的时候,直接解析实体类:
@ExcelProperty(value = "字符串标题", index = 0)
value :列的标题名称 index:列所在的列数:为0:表示写在第一行
List list = new ArrayList<>();
EasyExcel.read("C:\\Users\\521\\Desktop\\sys_user.xls") //获取要读取的文件对象
.head(SysUser.class)
.sheet("sys_user") //指定sheet:不指定,会默认读取全部的sheet
.registerReadListener(new AnalysisEventListener(){ //注册一个监听器:将每一行读取的结果,进行解析
@Override
public void invoke(SysUser sysUser, AnalysisContext analysisContext) {
list.add(sysUser);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("数据读取完毕");
}
}).doRead();
for(SysUser sysUser : list){
System.out.println(sysUser);
}
3、写入
//简化版:绑定映射的实体类
//测试easyExcle
//写入数据
@Test
public void testEasyExcle3(){
List list = new ArrayList<>();
EasyExcel.read("C:\\Users\\521\\Desktop\\sys_user.xls") //获取要读取的文件对象
.head(SysUser.class) //每一列的标题
.sheet("sys_user") //指定sheet:不指定,会默认读取全部的sheet
.registerReadListener(new AnalysisEventListener(){ //注册一个监听器:将每一行读取的结果,进行解析
@Override
public void invoke(SysUser sysUser, AnalysisContext analysisContext) {
list.add(sysUser);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("数据读取完毕");
}
}).doRead();
for(SysUser sysUser : list){
System.out.println(sysUser);
}
//list写入excle文件
EasyExcel.write("C:\\Users\\521\\Desktop\\sys_user_副本.xls")
.head(SysUser.class)//每一列的标题
.excelType(ExcelTypeEnum.XLS)
.sheet("sys_user")
.doWrite(list);
}
4、springboot读取数据库生产excle
@PostMapping("/sysUser/List")
public ResponseResult<?> findPage(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(defaultValue = "") String search) {
LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
// if (StrUtil.isNotBlank(search)) {
// wrapper.like(Role::getName, search);
// }
Page RolePage = sysUserMapper.selectPage(new Page<>(pageNum, pageSize), wrapper);
System.out.println("************");
//断点调试捕获 列表
System.out.println(RolePage.getRecords());
//list写入excle文件
EasyExcel.write("C:\\Users\\521\\Desktop\\sys_user_副本1.xls")
.head(SysUser.class) //每一列的标题
.excelType(ExcelTypeEnum.XLS)
.sheet("sys_user")
.doWrite(RolePage.getRecords());
System.out.println("************");
return new ResponseResult(200,"查询用户列表成功",RolePage);