Java中jar包批量导入 java如何批量导入数据 您所在的位置:网站首页 imgtool怎么批量导入 Java中jar包批量导入 java如何批量导入数据

Java中jar包批量导入 java如何批量导入数据

2023-06-27 20:32| 来源: 网络整理| 查看: 265

本文主要讲的是怎么使用批量导入数据,前台传入excel文件,后台解析,数据插入数据库

如果需要java后台导出excl文件,请点击  使用java在后台将数据导出为excel文件

例如:我从前台传入一个为excl格式的文件(数据在文件里面,文件名称,位置,内容,都可更改)。在后台得到此文件,解析此文件中的内容(这里演示的内容映射为一个对象,具体问题具体分析),把内容解析插入到数据库中。

第一步:前台传入excl文件。(这个步骤没啥要写的)

1.前台像后台发送excl文件。你可以使用你自己的方法,这里为演示。你想用哪个就用哪个。

前台传递的方法(有可能跟后面数据对不上,但思想对就行了)

页面上的按钮

导入 导入文件不能超过5M,仅允许“xls”或“xlsx”格式文件!

js方法(这里我们使用的是jp.open,它是封装了layer的js,这里不是主要讲解问题。jp.open这个就是打开一个弹出框,内容content显示为你定义的那个上传div内容,其中下载模板,是从网站上下载导入模板,确定是将选择的文件传入后台)

这里使用的是new FormData()对象,传递文件

// 导入 $("#btnImport").click(function() { jp.open({ type: 1, area: [500, 300], title: "导入数据", content: $("#importBox").html(), btn: ['下载模板', '确定', '关闭'], btn1: function(index, layero) { var gdzc = encodeURI(encodeURI('导入模板.xlsx')); window.location = '/ZK/Controller/import/template?modelName=sa_model&outFileName='+gdzc; }, btn2: function(index, layero) { var ofile = top.$("#uploadFile").get(0).files[0]; var fileSize = ofile.size/1024/1024;// M if(fileSize>5){ jp.info("文件不能大于5M"); return; } var ofileName = top.$("#uploadFile").val(); var outIndex = ofileName.lastIndexOf("."); var ofileExt = ofileName.substr(outIndex+1); if(ofileExt=="xls" || ofileExt=="xlsx"){ var formData = new FormData(); formData.append("file",ofile); $.ajax({ url : "/ZK/Controller/import", type : "post",// 使用post方法访问后台 data :formData, contentType:false, processData:false, chche:false, dataType : "json",// 返回数据的格式 success : function(data) { jp.infoSure(data.msg);// 提示 }, error:function(data){ jp.info("获取数据出错,请先刷新页面后重试"); } }); }else{ jp.info("文件仅支持上传xls和xlsx格式"); return; } }, btn3: function(index) { jp.close(index); } }); });

演示文件内容(A-H,共8个字段,这里的顺序不能打乱,否则对应不到后台相应的字段。)

Java中jar包批量导入 java如何批量导入数据_字段

这里我导入了两个页签,第二个页签中的内容如第一个,用一个xls表格可以导入很多不同种类的对象内容。

Java中jar包批量导入 java如何批量导入数据_数据库_02

第二步,后台接收文件(这里使用的是MultipartFile  这个类一般是用来接受前台传过来的文件,做个导入功能。)

@ResponseBody @RequestMapping(value="import") public String importFile(MultipartFile file){ try{ //读取Excel, ImportExcel ie = new ImportExcel(file,1,0); //解析,把数据解析放入map中 Map map = redExcelContent(ie); int successNum = 0; int successNum2 = 0; //把map中数据保存到数据库中 for(UserIU iu :(List map.get("1"))){//循环map的第一个值,代表excl中第一个页签内容 // 各种判断逻辑省略, //插入方法省略,我这里用的springmvc和mybatis,可以按照自己的相关框架,在这里就是直接把对象保存到数据库中 //insertUserIu(iu); successNum++; } //把map中数据保存到数据库中 for(KeepIU ku :(List map.get("2"))){//循环map的第二个值,代表excl中的第二个页签内容 // 各种判断逻辑省略, //插入方法省略,我这里用的springmvc和mybatis,可以按照自己的相关框架,在这里就是直接把对象保存到数据库中 //insertKeepIu(ku); successNum2++; } return "UserIu导入"+successNum+"条数据,KeepIu导入"+successNum2+"条数据"; }catch(Exception e){ logger.error("message",e) return "导入异常"; } }

具体的解析方法

//这个方法,简单演示一下。 public Map redExcelContent(ImportExcel ie) throws Exception{ if(ie.getWb()==null){ throw new Exception ("Workbook对象为空"); } Map map = new Map(); Sheet sheet1 = ie.getWb().getSheetAt(0);//第一页签内容; Sheet sheet2 = ie.getWb().getSheetAt(1);//第二页签内容; List listUserIu = new ArrayList(); //第一个页面内容对应的集合 List listKeepIu = new ArrayList(); //解析第一个页面 ie.setSheet(sheet1); int rowNum = sheet1.getLastRowNum();//得到行数,具体有多少行,就有多少个对象 for(int i = 2; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有