java批量导入Excel数据超详细实例

 更新时间:2023年08月23日 10:58:05   作者:java-jcm  
这篇文章主要给大家介绍了关于java批量导入Excel数据的相关资料,EXCEL导入就是文件导入,操作代码是一样的,文中给出了详细的代码示例,需要的朋友可以参考下

1.后台导入代码

import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
import cn.afterturn.easypoi.excel.imports.ExcelImportService;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
  @ApiOperation(value = "以导入excel方式")
    @PostMapping(value = "/uuApplyUserInfo")
    public String importMonitor(@RequestParam MultipartFile file) throws Exception {
        if (file == null) {
            return ValueUtil.isError("导入失败,上传文件数据不能为空");
        }
        ImportParams params = new ImportParams();
        params.setNeedVerify(true);//是否开启校验
        params.setHeadRows(1); //头行忽略的行数
        final ExcelImportService excelImportService = new ExcelImportService();
        ExcelImportResult excelImportResult = excelImportService.importExcelByIs(file.getInputStream(), YzLicensedUnit.class, params, false);
        //校验成功数据
        List<YzLicensedUnit> list = excelImportResult.getList();
        final Field failCollection = ExcelImportService.class.getDeclaredField("failCollection");
        failCollection.setAccessible(true);
        //校验失败数据
        List<YzLicensedUnit> failList = (List) failCollection.get(excelImportService);
        if (list.size() == 0 && failList.size() == 0) {
            return ValueUtil.isError("导入失败,上传文件数据不能为空");
        }
        if (failList.size() > 0){
            return ValueUtil.isError("导入失败,上传文件数据与模板不一致");
        }
        //如果没有错误,可以存入数据库
        if (list.size() >= 0 &&  StringUtil.isNotEmpty(list)) {
            //批量插入sql语句
            licensedUnitService.saveBatch(list);
        }else{
            return ValueUtil.isError("导入失败,上传文件数据不能为空");
        }
        return ValueUtil.toJson("导入成功");
    }

2.实体类

import cn.afterturn.easypoi.excel.annotation.Excel;
@Data
@TableName("数据库表名")
public class YzLicensedUnit {
    //表格有的字段都要加Execl,并且name要跟表格字段一致
    @Excel(name = "持证面积/亩")
    @NotNull(message = "持证面积/亩不能为空")
    private BigDecimal acreage;
    @ApiModelProperty(value = "经度")
    private String longitude;
    @ApiModelProperty(value = "纬度")
    private String latitude;
    //replace 表格传来的值如果等于 是,则字段内容插到表中的是0,否就是1
    @Excel(name = "苗种生产许可证持证单位",replace ={"是_0","否_1"})
    @NotNull(message = "苗种生产许可证持证单位不能为空")
    private String permit;
    @Excel(name = "持证编号")
    @NotNull(message = "持证编号不能为空")
    private String number;
    @Excel(name = "持证单位")
    @NotNull(message = "持证单位不能为空")
    private String entName;

2.1设置表格下拉选项 

3.vue前端导入功能代码

      <el-upload
          :auto-upload="true"
          :multiple="false"
          :on-change="handleChange"
          :on-success="fileUploadSuccess"
          :on-error="fileUploadError"
          :file-list="fileList"
          :action="BASE_API"
          name="file"
          accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
      >
        <el-button size="small" type="primary">批量导入</el-button>
      </el-upload>
export default {
  data() {
    return {
      fileList: [],
      //批量导入接口地址
      BASE_API: this.http_url + "/api/uuApplyUserInfo",
    };
  },
 methods: {
    handleChange() {
    },
    // 上传多于一个文件时
    fileUploadExceed() {
      this.$message.warning("只能选取一个文件");
    },
    //上传成功回调:通信成功
    fileUploadSuccess(row) {
      //业务失败
      if (row.code == '500') {
        this.$message.error(row.msg);
      } else {
        //业务成功
        this.$message.success(row.msg);
      }
      this.fileList = [];
      this.search();
    },
    //上传失败回调:通信失败
    fileUploadError(error) {
      error = JSON.parse(error.toString().substr(6));
      this.$message.error(error.msg);
    }
}

总结 

到此这篇关于java批量导入Excel数据的文章就介绍到这了,更多相关java批量导入Excel数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java多线程工具CompletableFuture的使用教程

    Java多线程工具CompletableFuture的使用教程

    CompletableFuture实现了CompletionStage接口和Future接口,前者是对后者的一个扩展,增加了异步回调、流式处理、多个Future组合处理的能力。本文就来详细讲讲CompletableFuture的使用方式,需要的可以参考一下
    2022-08-08
  • Spring自动装配之方法、构造器位置的自动注入操作

    Spring自动装配之方法、构造器位置的自动注入操作

    这篇文章主要介绍了Spring自动装配之方法、构造器位置的自动注入操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java项目自动生成接口文档教程

    Java项目自动生成接口文档教程

    本文主要介绍了Java项目自动生成接口文档教程,包含使用Apifox插件从IDEA生成的文档,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Java+EasyExcel实现文件的导入导出

    Java+EasyExcel实现文件的导入导出

    在项目中我们常常需要Excel文件的导入与导出,手动输入相对有些繁琐,所以本文教大家如何在Java中轻松导入与导出Excel文件,感兴趣的可以学习一下
    2021-12-12
  • Java 静态代理与动态代理解析

    Java 静态代理与动态代理解析

    这篇文章主要介绍了Java 静态代理与动态代理解析,关于静态代理与动态代理,一直是比较困扰很多新人开发,但实际我们开发中,小到写的某个工具类,大到经常使用的Retrofit 其内部都使用了动态代理,所以这篇文章从基础到源码解析,以便简单理解静态代理与Jdk中的动态代理
    2022-02-02
  • 基于java实现停车场管理系统

    基于java实现停车场管理系统

    这篇文章主要为大家详细介绍了基于java实现停车场管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • SpringBoot okhtt工具类封装方式

    SpringBoot okhtt工具类封装方式

    本文介绍了如何在SpringBoot项目中使用OkHttp工具类进行HTTP请求,并提供了一个封装了GET和POST方法的工具类示例,在Controller中使用该工具类时,需要注意OkHttpClient的静态初始化和异常处理
    2025-03-03
  • scala+redis实现分布式锁的示例代码

    scala+redis实现分布式锁的示例代码

    这篇文章主要介绍了scala+redis实现分布式锁的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Java连接ftp服务器实例代码

    Java连接ftp服务器实例代码

    这篇文章主要介绍了Java连接ftp服务器实例代码 的相关资料,需要的朋友可以参考下
    2015-12-12
  • SpringCloud集成Nacos的使用小结

    SpringCloud集成Nacos的使用小结

    这篇文章主要介绍了SpringCloud集成Nacos的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论