前言:太特么难了,网上一堆大坑写的半拉柯基的,我是东拼西凑,连蒙带骗,可算是整出来了。佰度得内容都是大坑啊,有一个人写得又test8又test19的,也不写是啥玩意。为了避免这个文章被驳回,我忍住了一万句骂人的话语。看他们写那玩意憋一肚子气啊。

、、先整个按钮,随便在哪,是个按钮就行。给按钮加个id = uploadPgb

<button class="layui-btn layui-btn-radius" id="uploadPgb">数据导入</button>

下边就是重要的代码了,我知道的基本都写了。有懂得留言吧

//找到你的layui.use   里边加个upload
layui.use(['table', 'layer', 'laydate','upload', 'jquery'], function () {//...不管其他代码//下边随便找个空位置$("#uploadPgb").click(function () {//获取下边需要使用的对象var $ = layui.jquery,upload = layui.upload;var default_config = {msg:"数据导入成功!"}// $.extend( default_config, config);var idRandom = "importData" + Math.ceil(Math.random()*10000) //模板的div的随机数id//创建模板(下边有个小四方框里边有个问好,不知道是啥,反正不影响,也没动他)var htmlContent = '<div class="layui-upload-drag" id="'+idRandom+'">';htmlContent += '<i class="layui-icon"></i>';htmlContent += '<p>点击选择文件,或将文件拖拽到此处</p>';htmlContent += '</div>';htmlContent += '<div style="text-align: center">';htmlContent += '<button id="test19" class="layui-btn">点击上传</button>';htmlContent += '</div>';layer.open({type: 1,offset: "auto" //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset,id: 'layer_importData' //防止重复弹出,title:'导入', headers: {"authorization": token},content: htmlContent    //需要打开的模板,maxWidth:800// ,btn: ['下载模板']   //这里可以加一个下载模板的按钮,我不需要,注释了。,btnAlign: 'c' //按钮居中,shade: 0 //不显示遮罩,yes: function(){//下载模板按钮提交// var iframe = $("<iframe></iframe>");// iframe.attr("src",default_config.downUrl);// iframe.css("display","none");// $("#"+idRandom).append(iframe);}});form.render();//这个不知道嘎哈的,复制来的,也没实验去掉行不行。你们谁实验了请告诉我结果//拖拽上传upload.render({elem: "#"+idRandom    //绑定上边定义的小弹窗,url: "../busineAssessment/uploadExcel",accept: 'file'   //普通文件, headers: {"authorization": token}  //我用的token,如果不是token验证的项目不用加这个,auto: false       //关闭自动上传(这个如果不写,文件拽进来直接走接口,不需要点按钮,想点按钮就写个这个拒绝自动上传),bindAction: '#test19'   //上边选择拒绝自动上传了这个里就自己加个按钮,点击自动调用url接口,done: function(data){  //调用结束返回的dataif(data.code == 0){layer.closeAll();//执行成功关闭弹窗//layer.msg(data.msg);}else{layer.msg(data.msg);}}});return false;});}

//下边是后台代码

//控制层,没啥用,就是接到这个file然后仍到service中

@ApiOperation(value = "execl数据持久化")@PostMapping("busineAssessment/uploadExcel")@ResponseBodypublic String uploadExcel(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) {System.out.println("进来了");Map<String, Object> map = new HashMap<String, Object>();String resouce = busineAssessmentService.uploadExcel(file, request, response);return resouce;}

//service逻辑层

@Overridepublic String uploadExcel(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;if(file.isEmpty()){try {throw new Exception("文件不存在!");} catch (Exception e) {e.printStackTrace();}}InputStream in =null;try {in = file.getInputStream();} catch (IOException e) {e.printStackTrace();}List<List<Object>> listob = null;try {listob = new ExcelUtils().getBankListByExcel(in,file.getOriginalFilename());} catch (Exception e) {e.printStackTrace();}//该处可调用service相应方法进行数据保存到数据库中,现只对数据输出for (int i = 0; i < listob.size(); i++) {System.out.println(listob.get(i));}return "success";}

ExcelUtils

package com.company.project.common.utils;import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.InputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;/*** Constant** @author wenbin* @version V1.0* @date 2020年3月18日*/
public class ExcelUtils {private final static String excel2003L =".xls";    //2003- 版本的excelprivate final static String excel2007U =".xlsx";   //2007+ 版本的excel/*** 描述:获取IO流中的数据,组装成List<List<Object>>对象* @param in,fileName* @return* @throws*/public  List<List<Object>> getBankListByExcel(InputStream in, String fileName) throws Exception {List<List<Object>> list = null;//创建Excel工作薄Workbook work = this.getWorkbook(in, fileName);if (null == work) {throw new Exception("创建Excel工作薄为空!");}Sheet sheet = null;  //页数Row row = null;  //行数Cell cell = null;  //列数list = new ArrayList<List<Object>>();//遍历Excel中所有的sheetfor (int i = 0; i < work.getNumberOfSheets(); i++) {sheet = work.getSheetAt(i);if (sheet == null) {continue;}//遍历当前sheet中的所有行for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) {row = sheet.getRow(j);if (row == null || row.getFirstCellNum() == j) {continue;}//遍历所有的列List<Object> li = new ArrayList<Object>();for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {cell = row.getCell(y);li.add(this.getValue(cell));}list.add(li);}}return list;}/*** 描述:根据文件后缀,自适应上传文件的版本* @param inStr,fileName* @return* @throws Exception*/public  Workbook getWorkbook(InputStream inStr,String fileName) throws Exception{Workbook wb = null;String fileType = fileName.substring(fileName.lastIndexOf("."));if(excel2003L.equals(fileType)){wb = new HSSFWorkbook(inStr);  //2003-}else if(excel2007U.equals(fileType)){wb = new XSSFWorkbook(inStr);  //2007+}else{throw new Exception("解析的文件格式有误!");}return wb;}/*** 描述:对表格中数值进行格式化* @param cell* @return*///解决excel类型问题,获得数值public  String getValue(Cell cell) {String value = "";if(null==cell){return value;}switch (cell.getCellType()) {//数值型case Cell.CELL_TYPE_NUMERIC:if (HSSFDateUtil.isCellDateFormatted(cell)) {//如果是date类型则 ,获取该cell的date值Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");value = format.format(date);;}else {// 纯数字BigDecimal big=new BigDecimal(cell.getNumericCellValue());value = big.toString();//解决1234.0  去掉后面的.0if(null!=value&&!"".equals(value.trim())){String[] item = value.split("[.]");if(1<item.length&&"0".equals(item[1])){value=item[0];}}}break;//字符串类型case Cell.CELL_TYPE_STRING:value = cell.getStringCellValue().toString();break;// 公式类型case Cell.CELL_TYPE_FORMULA://读公式计算值value = String.valueOf(cell.getNumericCellValue());if (value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串value = cell.getStringCellValue().toString();}break;// 布尔类型case Cell.CELL_TYPE_BOOLEAN:value = " "+ cell.getBooleanCellValue();break;default:value = cell.getStringCellValue().toString();}if("null".endsWith(value.trim())){value="";}return value;}
}

//需要的依赖

<!-- 读取excel --><!--文件上传组件--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><!--读取excel文件--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>

结束语:太特么难了,干的这憋气

layui导入功能实现(太特么难了,网上全是坑啊)相关推荐

  1. oracle导入excel字段超过4000字符数据_产品思考:B端产品中,为什么批量导入功能很重要?...

    B端产品的重要价值是提高企业的办公效率,在企业的日常工作中批量录入数据的场景很多,所以批量导入是b端设计中很重要的一个功能.本文作者结合案例,分享了自己关于B端产品批量导入功能的思考. 在做b端产品的 ...

  2. 【vue+springboot】excel模板下载、导入功能实现

    基于VUE+SpringBoot实现excel模板下载.导入功能 背景 最近在工作中经常遇到批量导入的功能,而且前端还要提示导入成功几条.失败几条.哪一条数据重复.是哪一条导入的数据出现问题等,抽空写 ...

  3. LayUi数据表格数据太多导致下拉框卡顿问题

    LayUi数据表格数据太多导致下拉框卡顿问题 layui数据表格(详见官网) 根据官网示例 做出数据表格 示例根据官网表格展示 在layui官网 数据表格示例中 https://www.layui.c ...

  4. Vue 实现 Excel 导入功能

    前言 在实际开发中导入功能是非常常见的,导入功能前端并不难,难的是后端字段的对应,主要处理在后端. 我们只需要用饿了吗ui upload上传组件封装一层就可以了,主要起到上传文件作用. 通过按钮跳转到 ...

  5. 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能

    做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...

  6. 明日之后什么服务器物品最便宜,明日之后:想赚“金条”?不知道这功能?那可就难了...

    "明日爱谈"第五十八期<想赚"金条"?不知道这功能?那可就难了> 游戏里,想要查看物品价格,要么直接跑到交易之城去查看,要么就直接通过电视进行远程查 ...

  7. 增加用例评审及思维导图导入功能,MeterSphere开源持续测试平台v1.3.0发布丨Release Notes

    9月29日,MeterSphere开源持续测试平台正式发布v1.3.0版本.在该版本中,MeterSphere主要针对测试跟踪及接口测试模块进行了功能更新及优化. 在测试跟踪模块中,我们增加了全新的用 ...

  8. c#直接调用ssis包实现Sql Server的数据导入功能

    调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能.思前想后,决定还是贴一下增强记忆,高手请54. 1.直接调 ...

  9. SAP Analytics Cloud Model的delta upload(增量导入)功能

    初始导入到Model中的数据,一共8行: 准备导入增量数据: 在本地csv文件新建一条增量记录(2020-3-13): 重命名为formatted2-delta1.csv, 导入系统: 点击这个dra ...

最新文章

  1. 币圈老人李启元站队BCH,背后的原因是什么?
  2. python好学吗mooc中文网-2020年大学mooc用Python玩转数据作业答案
  3. 使用ALV中输出ICON
  4. java判断字符串的值是否为0或者为空
  5. ORACLE 表类型 OLTP和OLAP
  6. QTableView操作 双击 单机事件信号
  7. mysql启动命令 windows_Windows下Nginx的启动停止等基本操作命令详解
  8. Why not inherit from ListT?
  9. IBM Watson启示录:AI不应该仅仅是炫技
  10. PHP乘法表菜鸟教程,第二节 菜鸟教程的实例
  11. Cannot open url. please check this url is correct
  12. 已有域名,如何建站。
  13. 2020.10小米校招一面
  14. Java读取excel表格
  15. MySQL基础篇3——DDL、DML、DCL使用篇
  16. Python安装Github包,离线包和在线包
  17. 技术分享 | 如何计算 MySQL 的 QPS/TPS
  18. JavaScript中的设计模式
  19. 电影QQ群怎么引流?电影的社群营销要怎么做?
  20. 华为手机大变?余承东被传离职转岗,进军美国受阻惹的祸?

热门文章

  1. 04.在android模拟器中运行linux驱动
  2. python shell怎么改字体颜色_在shell或者perl中改变字体或背景的颜色
  3. 胜为蓝牙适配器驱动_胜为udc 324b驱动下载-udc 324b蓝牙驱动下载 v6.5.1.2700官方版--pc6下载站...
  4. 猪肉涨价后的十条经典语录
  5. 搜卡之家网站上线公告
  6. python实现南大教务处通知更新进行自动推送
  7. 运行应用程序报错“Resource temporarily unavailable”的解决方法
  8. php 获取当前时间的方法
  9. 学习:InfoPath + Workflow + MOSS(转)
  10. 测试环境和测试分类的介绍