EasyExcel的导入导出(粗心犯错,在此总结错误以及步骤)

注意自己的ExcelDemo字段与实体类的差别! 这是我犯的错…

1.依赖添加

com.alibaba
easyexcel
2.2.6

2.创建excel操作的Demo类
@Data
public class TeacherDemo {
@ExcelProperty(index = 0,value=“讲师工号”)
private Integer id;

@ExcelProperty(index = 1,value="讲师姓名")
private String name;

@ExcelProperty(index = 2,value="讲师密码")
private String password;

@ExcelProperty(index = 3,value="讲师年龄")
private Integer age;

@ExcelProperty(index = 4,value="讲师性别")
private String gander;

@ExcelProperty(index = 5,value="电子邮箱")
private String email;

@ExcelProperty(index = 6,value="电话号")
private String phoneNum;

@ExcelProperty(index = 7,value="年级(XX级)")
private String grade;

@ExcelProperty(index = 8,value="班级(XX专业XX班)")
private String classRoom;

3.创建监听器继承AnalysisEventListener类
@Component
public class ExcelListener extends AnalysisEventListener {
@Resource
private TeacherService teacherService;

public ExcelListener() {
}

public ExcelListener(TeacherService teacherService) {
    this.teacherService = teacherService;
}

@Override
public void invoke(TeacherDemo demo, AnalysisContext analysisContext) {
//逻辑处理的位置就是这个方法!
    Teacher teacher = new Teacher();
    teacher.setId(demo.getId());
    teacher.setName(demo.getName());
    teacherService.save(teacher);
}

@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {

}

public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
}

}
4.导出接口的方法:

@GetMapping("export")
    public R getList(){
        QueryWrapper<Teacher> wrapper = new QueryWrapper<>();
        wrapper.orderByAsc("gmt_create");
        List<Teacher> list = teacherService.list(wrapper);
        List<TeacherDemo> list1 = new ArrayList<>();
        //demo赋值
        for (int i = 0; i < list.size(); i++){
            TeacherDemo teacherDemo = new TeacherDemo();
            teacherDemo.setId(list.get(i).getId());
            teacherDemo.setName(list.get(i).getName());
            list1.add(teacherDemo);
        }
        EasyExcel.write("D://文件名称.xlsx", TeacherDemo.class).sheet("讲师列表").doWrite(list1);
        return R.ok().message("导出成功!");
    }
    同样的应用前端可以直接@click除法,正常写法。
5.导入方法接口
 @PostMapping("import")
    public R importList(@RequestPart("file") MultipartFile file){
        try {
            InputStream inputStream = file.getInputStream();
            EasyExcel.read( inputStream,TeacherDemo.class,new ExcelListener(teacherService)).sheet().doRead();
            return R.ok().message("导入成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return R.error().message("导入失败!");
    }
Vue端调用:<el-upload
      :show-file-list="false"
      :on-success="handleSuccess"
      action="http://localhost:0000/xxxx/import">
     <el-button type="primary">导入<i class="el-icon-download"></i></el-button>
    </el-upload>
    

 handleSuccess(){
      this.$message({
          type: "success",
          message: "导入成功!",
        });
        this.selectAllTeacher()
    },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EasyExcel 是一个 Java Excel 操作工具,可以方便地进行 Excel 文件的导入导出和读取。以下是 EasyExcel 的使用方法: ### 导入 Excel 1. 添加 EasyExcel 依赖 ``` <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> </dependency> ``` 2. 创建 ExcelListener ```java public class ExcelListener extends AnalysisEventListener<Data> { private List<Data> dataList = new ArrayList<>(); @Override public void invoke(Data data, AnalysisContext analysisContext) { dataList.add(data); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { // 处理数据 } public List<Data> getDataList() { return dataList; } } ``` 3. 导入 Excel 文件 ```java String fileName = "test.xlsx"; File file = new File(fileName); ExcelReader reader = null; try { reader = EasyExcel.read(file, Data.class, new ExcelListener()).build(); reader.readAll(); } finally { if (reader != null) { reader.finish(); } } ``` ### 导出 Excel 1. 创建 ExcelWriter ```java String fileName = "test.xlsx"; ExcelWriter writer = EasyExcel.write(fileName, Data.class).build(); ``` 2. 写入数据 ```java List<Data> dataList = new ArrayList<>(); for (int i = 0; i < 10; i++) { Data data = new Data(); data.setName("Name" + i); data.setAge(i); dataList.add(data); } writer.write(dataList, EasyExcel.writerSheet("Sheet1").build()); ``` 3. 关闭 ExcelWriter ```java writer.finish(); ``` ### 读取 Excel 1. 创建 ExcelReader ```java String fileName = "test.xlsx"; File file = new File(fileName); ExcelReader reader = null; try { reader = EasyExcel.read(file, Data.class, new ExcelListener()).build(); reader.readAll(); } finally { if (reader != null) { reader.finish(); } } ``` 2. 处理数据 ```java List<Data> dataList = excelListener.getDataList(); // 处理数据 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值