一导入依赖

<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();
}
}
												

利用EasyExcel进行对表格数据的写入的更多相关文章

  1. JAVA处理Excel表格数据并写入数据库

    package com.hncj.test; import java.io.FileInputStream; import java.sql.Connection; import java.sql.D ...

  2. Visual Studio 2010利用libxl读写excel表格数据

    C++读写数据,一般通过txt文件,但是随着数据量的增大,采集数据时运用excel表格的优势得以逐步体现.本文主要介绍一下运用第三方库libxl,对excel表格数据进行读写.分为三个部分,第一部分是 ...

  3. Python利用xlutils统计excel表格数据

    假设有像上这样一个表格,里面装满了各式各样的数据,现在要利用模板对它进行统计每个销售商的一些数据的总和.模板如下: 代码开始: 1 #!usr/bin/python3 2 # -*-coding=ut ...

  4. 利用ExcelDataReader封装类 导入表格数据

    nuget 添加Install-Package ExcelDataReader

  5. C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表

    调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...

  6. JXL读取写入excel表格数据

    问题描述: 使用java的jxl包创建.写入excel表格数据 问题解决: (1)说明 (2)写入execel数据 注: 以上是写入数据需要调用的函数接口 注: 具体接口调用过程,如上所示 (3)读取 ...

  7. Java导出数据行写入到Excel表格:基于Apache POI

    Java导出数据行写入到Excel表格:基于Apache POI import java.io.File; import java.io.FileOutputStream; import org.ap ...

  8. 【Axure8】利用中继器(Repeater)实现表格数据的增删改

    利用Repeater实现对Table数据的增删改操作. 先拖入必需的控件:rectangle.text field.droplist.button.table.repeater.具体信息如图. 为方便 ...

  9. 利用 pandas库读取excel表格数据

    利用 pandas库读取excel表格数据 初入IT行业,愿与大家一起学习,共同进步,有问题请指出!! 还在为数据读取而头疼呢,请看下方简洁介绍: 数据来源为国家统计局网站下载: 具体方法 代码: i ...

随机推荐

  1. 有a1,a2,a3,a4,四个数组,四个数组重新组合成一个数组(A),间隔是10个元素

    好久没折腾Py了,这是去年年初2019.3月发在Q中的一个记录,因不从事这个,并且被在工厂耽误10几年,所以很少写Blog在这里,感觉这里比较正式,而在Q中只是随意性的记载, 但发布图片总是需要另外再 ...

  2. 附015.Kubernetes其他技巧

    一 优化镜像源 1.1 国内镜像源 global proxy in China format example dockerhub (docker.io) dockerhub.azk8s.cn dock ...

  3. PIP设置镜像源

    PIP设置镜像源 pip安装Python包时候,默认是国外的下载源,速度太慢,本文介绍几种设置pip国内镜像源的方法 镜像源 阿里云 http://mirrors.aliyun.com/pypi/si ...

  4. jsc和luac文件 xxtea 解密.

    # -*- coding: utf-8 -*- import xxtea import os src = "./assets/src" dst = "./assets/s ...

  5. AWS 错误标记3

    1. What is the average queue length recommended by AWS to achieve a lower latency for the 200 PIOPS ...

  6. WeChair项目Beta冲刺(1/10)

    团队项目进行情况 1.昨日进展    Beta冲刺第一天 前期进展: 对代码进行优化,完成上阶段冲刺未完成的实名认证上传图片的功能,解决解密存在部分失败的bug问题 2.今日安排 前端:设计扫码占座功 ...

  7. 团队进行Alpha冲刺--项目测试

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺--项目测试 作业正文 如下 其他参 ...

  8. 新来的"大神"用策略模式把if else给"优化"了,技术总监说:能不能想好了再改?

    本文来自作者投稿,原作者:上帝爱吃苹果 目前在魔都,贝壳找房是我的雇主,平时关注一些 java 领域相关的技术,希望你们能在这篇文章中找到些有用的东西.个人水平有限,如果文章有错误还请指出,在留言区一 ...

  9. Java 比较对象中的内容是否一致

    获取对象中的所有属性 private static Field[] getAllFields(Object object) { Class clazz = object.getClass(); Lis ...

  10. Python基础语法一

    所有内容都在代码上,有相关代码注释 # #代表注释 # 区分大小写.以回车换行结束 # 多行编写可以使用反斜杠 \ # 缩进代表一个代码块 #数值 #int类型可以使用下划线分割 c=123_456_ ...