利用EasyExcel進行對表格數據的寫入


一導入依賴

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>easyexcel</artifactId>
   <version>2.1.1</version>
</dependency>

 

二創建excel的實體類

package com.noob.eduservice.entity.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;

/**
 * Author: noob
 * DATE: 2020/7/13 0013
 * PROJECT: jiaoyu
 * DESCRIPTION: excel中對應的實體類
 **/
@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExcelSubjectDate {
    @ExcelProperty(index = 0)
    private String OneSubjectName;

    @ExcelProperty(index = 1)
    private String TwoSubjectName;
}

三創建excel的監聽器

package com.noob.eduservice.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.noob.eduservice.entity.EduSubject;
import com.noob.eduservice.entity.vo.ExcelSubjectDate;
import com.noob.eduservice.service.EduSubjectService;
import com.noob.exceptionHander.zdyException;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

/**
 * Author: noob
 * DATE: 2020/7/13 0013
 * PROJECT: jiaoyu
 * DESCRIPTION: 讀取Excel文件時的監聽器,SubjectExcelListener這個類不能被spring管理,需要用到無參構造
 **/
@NoArgsConstructor
@AllArgsConstructor
public class SubjectExcelListener extends AnalysisEventListener<ExcelSubjectDate>{
    private EduSubjectService eduSubjectService;
    /**
     * @Author noob
     * @Description //讀取excel中的內容,一行一行讀取加入數據庫中
     * @Param
     * @return
     **/
    @Override
    public void invoke(ExcelSubjectDate excelSubjectDate, AnalysisContext analysisContext) {
        if (excelSubjectDate == null){
            throw new zdyException(20001,"文件異常");
        }
        //一行一行讀取,每次讀取兩個值
        //判斷一級分類是否相同
        EduSubject exitOneSubject = this.exitOneSubject(eduSubjectService, excelSubjectDate.getOneSubjectName());
        if (exitOneSubject == null){ //沒有這個一級分類進行添加
            exitOneSubject = new EduSubject();
            exitOneSubject.setParentId("0");
            exitOneSubject.setTitle(excelSubjectDate.getOneSubjectName());
            eduSubjectService.save(exitOneSubject);
        }
        //判斷二級分類
        String pid = exitOneSubject.getId();//獲取一級分類的id值
        EduSubject exitTwoSubject = this.exitTwoSubject(eduSubjectService, excelSubjectDate.getTwoSubjectName(), pid);
        if (exitTwoSubject == null){
            exitTwoSubject = new EduSubject();
            exitTwoSubject.setParentId(pid);
            exitTwoSubject.setTitle(excelSubjectDate.getTwoSubjectName());
            eduSubjectService.save(exitOneSubject);
        }
    }
    //判斷二級分類不能重復
    private EduSubject exitTwoSubject(EduSubjectService eduSubjectService,String name,String pid){
        QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();
        wrapper.eq("title",name);
        wrapper.eq("parent_id",pid);
        EduSubject onesubject = eduSubjectService.getOne(wrapper);
        return onesubject;
    }
    //判斷一級分類不能重復
    private EduSubject exitOneSubject(EduSubjectService eduSubjectService,String name){
        QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();
        wrapper.eq("title",name);
        wrapper.eq("parent_id",0);
        EduSubject twosubject = eduSubjectService.getOne(wrapper);
        return twosubject;
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
    }
}

四進行測試

package com.noob.eduservice.controller;


import com.noob.commomutils.R;
import com.noob.eduservice.service.EduSubjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 * 課程科目 前端控制器
 * </p>
 *@Description
 * @author testjava
 * @since 2020-07-13
 */
@RestController
@RequestMapping("/edu/subject")
@CrossOrigin
public class EduSubjectController {
    @Autowired
    private EduSubjectService eduSubjectService;
    /**
     * @Author noob
     * @Description //添加課程分類,獲取上傳過來的文件進行讀取
     * @Param file:上傳的文件
     * @return
     **/
    @PostMapping("addsubject")
    public R  addSubject(MultipartFile file){
        eduSubjectService.saveSubject(file);
        return R.ok();
    }
}

 

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM