首页 > 数据库 >Java Excel导入信息加入数据库

Java Excel导入信息加入数据库

时间:2023-09-07 12:01:49浏览次数:42  
标签:essay school Java Excel private 导入 import net yierde

0.导入依赖

<!-- EasyExcel 依赖开始-->
  <dependency>
  	<groupId>com.alibaba</groupId>
  	<artifactId>easyexcel</artifactId>
  	<version>3.2.1</version>
  </dependency>
 <!-- EasyExcel 依赖结束-->

1.在controller中调用

Java Excel导入信息加入数据库_ide

2.实体类中内容,记得要在实体类中加入 MultipartFile 类型的属性,这个就是表格

Java Excel导入信息加入数据库_实体类_02

3.监听器内容

package net.yierde.essay.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import net.yierde.essay.base.domain.EssayBaseArea;
import net.yierde.essay.base.service.IEssayBaseAreaService;
import net.yierde.essay.domain.EssaySchool;
import net.yierde.essay.domain.EssayTeacher;
import net.yierde.essay.mapper.EssaySchoolMapper;
import net.yierde.essay.service.IEssaySchoolService;
import net.yierde.essay.service.IEssayTeacherService;
import net.yierde.essay.system.service.ISysUserService;
import net.yierde.essay.utils.SecurityUtils;
import net.yierde.techkit.cloud.common.core.domain.entity.SysUser;
import net.yierde.techkit.cloud.common.core.utils.RegularUtil;

import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;


/**
 * 导入学校信息
 * 这是监听器,只能通过构造方法来加入,你所需要的接口方法,mapper接口、
 * 实现了ReadListener接口
 * 重写了invoke 方法,在这个里面进行加入数据操作
 */
public class EssaySchoolReadListener implements ReadListener<EssaySchool> {

    private EssaySchool essaySchool;

    private IEssaySchoolService essaySchoolService;

    private IEssayTeacherService essayTeacherService;

    private Pattern pattern = Pattern.compile(RegularUtil.REGEXP_MOBILETEL);

    private ISysUserService userService;

    private IEssayBaseAreaService baseAreaService;

    private EssaySchoolMapper essaySchoolMapper;

    private int effect;

    public EssaySchoolReadListener(EssaySchool essaySchool, IEssayTeacherService essayTeacherService, ISysUserService userService, IEssayBaseAreaService baseAreaService, EssaySchoolMapper essaySchoolMapper) {
        this.essaySchool = essaySchool;
        this.essayTeacherService = essayTeacherService;
        this.userService = userService;
        this.baseAreaService = baseAreaService;
        this.essaySchoolMapper = essaySchoolMapper;
    }

    public int getEffect() {
        return effect;
    }

    public void setEffect(int effect) {
        this.effect = effect;
    }

    @Override
    public void invoke(EssaySchool school, AnalysisContext context) {
//        校验数据
        checkSchool(school);
        //        加入省市县ID
        school.setProvinceId(AreaID(school.getProvinceName(),0L));
        school.setCityId(AreaID(school.getCityName(),school.getProvinceId()));
        school.setCountyId(AreaID(school.getCountyName(),school.getCityId()));
//        学段中中文逗号 转成英文逗号
        school.setPeriod(school.getPeriod().replace(",",","));
        try{
            SecurityUtils.initInsert(school);
            effect+= essaySchoolMapper.insertEssaySchool(school);
//            如果有电话号码是否 加入系统用户

        }catch (Exception e){
            e.printStackTrace();
            throw new RuntimeException("请检查数据是否正确");
        }
    }

    /**
     * 校验数据
     * 1.导入数据电话存在 校验电话号码 是否重复
     */
    private void checkSchool(EssaySchool school) {
       //根据需要加入自己的校验

    }

    /**
     * 判断教师模版导入 省市区县名称 关系是否对应
     */
    public boolean isAreaRight(EssaySchool school){
		//根据需要加入自己的需求
    }

    /**
     * 根据省市县名称 获取 省市县所对应的 省市县的ID
     */
    public Long AreaID(String areaName,long pid){
		//根据需要加入自己的需求
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {

    }
}














标签:essay,school,Java,Excel,private,导入,import,net,yierde
From: https://blog.51cto.com/u_16206682/7395728

相关文章

  • 用Excel和批处理实现批量重命名文件
    需求:现有100个文件,每个文件需要复制成3份,并且在文件名后加上-张三、-李四、-王五。1.全选所有文件,复制,粘贴,粘贴,形成300个文件。2.使用命令输出所有文件名到文本文件中。dir/b>name.txt3.将结果复制到Excel的某一列中。4.在某一列中,输入-张三、-李四、-王五(通过在字符串前......
  • 04Java学习_DOS原理和路径详解
    DOS原理和路径详解DOS原理Dos:DiskOperatingSystem磁盘操作系统。路径详解相对路径:从当前目录开始定位,形成的一个路径。绝对路径:从顶级目录开始定位,形成的一个路径。..\表示到上一级目录。参考链接:DOS原理相对与绝对路径DOS常用命令查看当前目录有什么内容,......
  • ChatGPT玩法(二):AI玩转Excel表格处理
    前言在线体验智能问答:https://www.topgpt.one你是否还在为记不住Excel的繁琐函数和公式而苦恼?如果是这样,那么不妨试试ChatExcel。即使你对函数一窍不通,也能轻松处理表格。只要你能清楚地描述你的需求,它就可以帮你搞定。此外,ChatExcel的作者还制作了一张工作流程对比图,一眼就能明白......
  • 无涯教程-JavaScript - BESSELJ函数
    描述BESSELJ函数返回贝塞尔函数Jn(x)。语法BESSELJ(X,N)争论Argument描述Required/OptionalXThevalueatwhichtoevaluatethefunction.RequiredNTheorderoftheBesselfunction.Ifnisnotaninteger,itistruncated.RequiredNotes如果x为非数值,......
  • 十个最好的Java性能故障排除工具
    推荐十个最好的Java性能故障排除工具:  1.jconsole是随着JDK1.5而推出的。这是一个Java监测和管理控制台-JMX兼容的图形工具来监测Java虚拟机。它能够同时监测本地和远程的JVMs。详情可查看:jconsole工具介绍  2.VisualVM集成了几个现有的JDK软件工具,轻量级内存和CPU信息概......
  • Lucene3.0.2高亮显示报:java.lang.reflect.InvocationTargetException
    项目原导入包:lucene-core-3.0.2.jarlucene-highlighter-3.0.2.jar采用TermPositionVector位置方式进行高亮显示,主要代码如下:     TermPositionVectortermFreqVector=(TermPositionVector)reader.getTermFreqVector(id,fieldName);    TokenStreamtokenStream=Toke......
  • 善用java中的随机数
    Math.random()方法:产生0~1间的一个double随机值。(可直接用)还可以让random作为时间种子:在java.util.Random类下,有:Randomr=newRandom();r.nextInt(100);//生成0~99之间的随机整数还有,System类里有一个currentTimeMills()方法,返回一个从1970年1月1日0点0分0秒到目前的一个随......
  • 深入研究java.lang.Runtime类
    在线API:http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html转自:http://lavasoft.blog.51cto.com/62575/15565一、概述     Runtime类封装了运行时的环境。每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。     ......
  • [EasyExcel] 导出合并单元格
    前言使用springboot对excel进行操作在平时项目中要经常使用。常见通过jxl和poi的方式进行操作。但他们都存在一个严重的问题就是非常的耗内存。这里介绍一种EasyExcel工具来对excel进行操作。一、EasyExcel是什么?EasyExcel是阿里巴巴开源的一个excel处理框架,以使用......
  • Excel表格中进行36进制流水编号
    最简单的操作步骤:1、A1:A10是数字0~9这10数值,A11~A36是大写字母A、B、C…………Y、Z这26个字母2、则可在B1单元格或其他单元格中,输入公式:=INDEX($A$1:$A$36,1+MOD(INT((ROW()-1)/46656),36))&INDEX($A$1:$A$36,1+MOD(INT((ROW()-1)/1296),36))&INDEX($A$1:$A$36,1+MOD(INT((35+......