解决如何使用layui导入Excel表数据

1.前端页面html代码展示

 <button type="button" lay-submit="" class="layui-btn layui-btn-warm" lay-  filter="uploadImg"><i class="layui-icon"></i>导出Excel</button>

2.前端页面js代码展示

 layui.use(['table', 'form', 'layer', 'vip_table',"element", "laypage", "upload"],    function () {// 操作对象var form = layui.form, table = layui.table, layer = layui.layer, vipTable = layui.vip_table, $ = layui.jquery;var element = layui.element;var laypage = layui.laypage;var upload = layui.upload;//主要是这个//导入excel表//选完文件后不自动上传upload.render({elem: '#importData',url: '${pageContext.request.contextPath }/infoSheet/ajaxUpload',auto: true,accept: 'file' //普通文件//,multiple: true// ,bindAction: '#test19',done: function(res){console.log(res)//上传完毕//如果上传失败if(res.code > 0){return layer.msg("导入失败",{icon:5,time:1000});}//上传成功return layer.msg("导入成功",{icon:6,time:1000});}});});

3.java后台代码

//导入excel@ResponseBody@RequestMapping(value="/ajaxUpload",method={RequestMethod.GET,RequestMethod.POST})public Map<String, Object> ajaxUploadExcel(@RequestParam("file")MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws Exception {System.out.println("进来了");Map<String, Object> map = new HashMap<String, Object>();String aa= infoSheetService.ajaxUploadExcel(file, request, response);if("success".equals(aa)){map.put("code", 0);map.put("msg", "success");}else {map.put("code", 1);map.put("msg", "fail");}return map;}/** 文件导入(批量导入)* */public String ajaxUploadExcel(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++) {List<Object> lo = listob.get(i);//         System.out.println("遍历" + listob.get(i));InfoSheet vo = new InfoSheet();InfoSheet j = null;try {HashMap<Object, Object> map=new HashMap<Object, Object>();map.put("infoName", String.valueOf(lo.get(0)));j = infoSheetMapper.selectByPrimaryKey1(map);} catch (NumberFormatException e) {System.out.println("没有新增");return "fail";}// vo.setInfoId(Integer.valueOf(String.valueOf(lo.get(0))));//企业IDvo.setInfoName(String.valueOf(lo.get(0)));//企业名称// IndustryType industryType =new IndustryType();// industryType.setIndustryTypeId(Integer.valueOf(String.valueOf(lo.get(2))));//   System.out.println(i+"String.valueOf(lo.get(1))===="+String.valueOf(lo.get(1)));IndustryType industryType=industryTypeMapper.selectByPrimaryKey1(String.valueOf(lo.get(1)));//如果行业的类型不存在,添加新的行业类型if(industryType==null){   IndustryType industryType0=new IndustryType();industryType0.setIndustryTypeName(String.valueOf(lo.get(1)));industryTypeMapper.insert(industryType0);IndustryType industryType1=industryTypeMapper.selectByPrimaryKey1(String.valueOf(lo.get(1)));vo.setIndustryType(industryType1);//行业类型ID}else {vo.setIndustryType(industryType);//行业类型ID}//InfoType infoType=new InfoType();// infoType.setInfoTypeId(Integer.valueOf(String.valueOf(lo.get(3))));InfoType infoType =infoTypeMapper.selectByPrimaryKey1(String.valueOf(lo.get(2)));if (infoType==null) {InfoType infoType0 =new InfoType();infoType0.setInfoTypeName(String.valueOf(lo.get(2)));infoTypeMapper.insert(infoType0);InfoType infoType1 =infoTypeMapper.selectByPrimaryKey1(String.valueOf(lo.get(2)));vo.setInfoType(infoType1);//企业类型ID } else {vo.setInfoType(infoType);//企业类型ID}Area area=areaMapper.selectByPrimaryKey1(String.valueOf(lo.get(3)));//公司地区if (area==null) {Area area0=new Area();area0.setAreaName(String.valueOf(lo.get(3)));areaMapper.insert(area0);Area area1=areaMapper.selectByPrimaryKey1(String.valueOf(lo.get(3)));//公司地区vo.setArea(area1);} else {vo.setArea(area);}vo.setInfoGround(String.valueOf(lo.get(4)));//详细所属地vo.setRegistCapital(String.valueOf(lo.get(5)));//资本注册vo.setInfoPhone(String.valueOf(lo.get(6)));//联系电话vo.setInfoPostbox(String.valueOf(lo.get(7)));//公司邮箱Date infoTime; try { String  infoString=String.valueOf(lo.get(8)).replace(".", "-");//System.out.println("infoString====="+infoString); // if("20114-04-14".equals(infoString)){System.out.println("i================"+i);}String  info=infoString+" 00:00:00";infoTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(info);//成立时间vo.setInfoTime(infoTime);} catch (ParseException e) { e.printStackTrace(); }if(j == null){// System.out.println("判断j为空的话");infoSheetMapper.insert(vo);}else{//    System.out.println("判断j为不空的话");infoSheetMapper.updateByPrimaryKey(vo);}}return "success";}
package com.tools;import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;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;//ajaxUploadExcel方法中的业务逻辑需要调用的ExcelUtils类的方法
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 IOException*/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;}}
package com.pojo;import java.util.Date;
//导入的实体类
public class InfoSheet {/*** info_sheet*/private Integer infoId;/*** 行业类型*/private IndustryType industryType;/*** 企业类型*/private InfoType infoType;/*** info_sheet*/private String infoName;/*** info_sheet*/private String infoGround;/*** info_sheet*/private String registCapital;/*** info_sheet*/private String infoPhone;/*** info_sheet*/private String infoPostbox;/*** info_sheet*/private Date infoTime;/*** 企业ID* @return info_ID 企业ID** @mbggenerated 2019-06-26*/public Integer getInfoId() {return infoId;}private Area area;public Area getArea() {return area;}public void setArea(Area area) {this.area = area;}/*** 企业ID* @param infoId 企业ID** @mbggenerated 2019-06-26*/public void setInfoId(Integer infoId) {this.infoId = infoId;}/*** 行业类型** @mbggenerated 2019-06-26*/public IndustryType getIndustryType() {return industryType;}public void setIndustryType(IndustryType industryType) {this.industryType = industryType;}/*** 企业类型ID** @mbggenerated 2019-06-26*/public InfoType getInfoType() {return infoType;}public void setInfoType(InfoType infoType) {this.infoType = infoType;}/*** 企业名称* @return info_name 企业名称** @mbggenerated 2019-06-26*/public String getInfoName() {return infoName;}/*** 企业名称* @param infoName 企业名称** @mbggenerated 2019-06-26*/public void setInfoName(String infoName) {this.infoName = infoName;}/*** 详细所属地* @return info_ground 详细所属地** @mbggenerated 2019-06-26*/public String getInfoGround() {return infoGround;}/*** 详细所属地* @param infoGround 详细所属地** @mbggenerated 2019-06-26*/public void setInfoGround(String infoGround) {this.infoGround = infoGround;}/*** 资本注册* @return regist_capital 资本注册** @mbggenerated 2019-06-26*/public String getRegistCapital() {return registCapital;}/*** 资本注册* @param registCapital 资本注册** @mbggenerated 2019-06-26*/public void setRegistCapital(String registCapital) {this.registCapital = registCapital;}/*** 联系电话* @return info_phone 联系电话** @mbggenerated 2019-06-26*/public String getInfoPhone() {return infoPhone;}/*** 联系电话* @param infoPhone 联系电话** @mbggenerated 2019-06-26*/public void setInfoPhone(String infoPhone) {this.infoPhone = infoPhone;}/*** 公司邮箱* @return info_postbox 公司邮箱** @mbggenerated 2019-06-26*/public String getInfoPostbox() {return infoPostbox;}/*** 公司邮箱* @param infoPostbox 公司邮箱** @mbggenerated 2019-06-26*/public void setInfoPostbox(String infoPostbox) {this.infoPostbox = infoPostbox;}/*** 成立时间* @return info_time 成立时间** @mbggenerated 2019-06-26*/public Date getInfoTime() {return infoTime;}/*** 成立时间* @param infoTime 成立时间** @mbggenerated 2019-06-26*/public void setInfoTime(Date infoTime) {this.infoTime = infoTime;}
}

4.感谢你的浏览访问

  工作几年,略有心得,然很少整理成文,平常工作中浏览了不少道友的好文章,受益良多。 顾也开始写一些文章, 希望能与各位道友分享进步 !!!!如果有用,欢迎各位点赞评论,若有不足,亦可指正!!!

解决如何使用layui导入Excel表数据相关推荐

  1. heidi xlsx导入mysql_heidisql导入excel表数据

    1.将excel表中的数据修改,然后另存为.csv格式文件.例如:XX.csv 2.在heidisql中点击[工具]--点击[导入.csv文件]--编辑好1234点之后点击[导入] 3.重点重点,以下 ...

  2. sqlyog导入Excel表数据,出现找不到Microsoft office64驱动(笔记)

    原文:https://blog.csdn.net/a18852867035/article/details/82719775 编辑后的AceRedist.msi安装包: 链接:https://pan. ...

  3. django项目中实现excel表数据导入

    依赖模块: xlrd模块安装:pip install xlrd 安装好xlrd模块之后基本的准备工作就已经完成. 实现: views.py: def import_excel(self, reques ...

  4. brother标签打印软件_标签打印软件如何导入excel表批量制作光缆标牌

    光缆标牌是贴在光缆线上的标识牌,一般记录着该光缆的起始位置和结束位置,以及当前光缆的线长,有了光缆标牌可以使人了解该光缆线的具体情况,以及方便后期维修人员对光缆线的维修检测.那么一般的光缆标牌是如何批 ...

  5. excel实现套用模板批量打印_标签打印软件如何导入excel表批量制作光缆标牌

    光缆标牌是贴在光缆线上的标识牌,一般记录着该光缆的起始位置和结束位置,以及当前光缆的线长,有了光缆标牌可以使人了解该光缆线的具体情况,以及方便后期维修人员对光缆线的维修检测.那么一般的光缆标牌是如何批 ...

  6. excel表数据导入数据库mysql中,并解决导入时间格式问题

    1.准备好Excel表数据 id category_id category_pid title art_desc content imageurl tags   create_time   3 1 E ...

  7. php excel导入数据库显示乱码,php修改excel表格数据库数据格式-使用phpexcel导入excel表格数据到MYSQL,乱码怎么解决...

    PHP 用PHPExcel往数据库导入大量数据 估计0是null,所以不显示了,可以换个思路,让他显示为字符串 $number = 0; echo ''.$number 原生PHP代码实现excel导 ...

  8. navicat导入excel表中数据出错问题

    navicat导入excel表中数据出错问题 解决办法,修改excel表中重复的字段

  9. java操作mysql导表_Java实现批量导入excel表格数据到数据库中的方法

    本文实例讲述了Java实现批量导入excel表格数据到数据库中的方法.分享给大家供大家参考,具体如下: 1.创建导入抽象类 package com.gcloud.common.excel; impor ...

最新文章

  1. Centos7解决图形界面卡死问题
  2. 【bzoj3224】 Tyvj1728—普通平衡树
  3. SAP ABAP:获取汇率的完整实现之一
  4. JAVA复习5(集合——ArrayList)
  5. LeetCode-3Sum -三数求和-有序数组扫描
  6. C:\Windows\Installer越来越大?让我们一起来删除msp这个毒瘤
  7. ffmpeg拉流设置暂停_解决ffmpeg拉流转发频繁丢包问题max delay reached. need to consume packet...
  8. java.lang.IllegalArgumentException: An invalid character [10] was present in the Cookie value
  9. 深度学习:Image Object Detection方法
  10. 【51单片机】利用烧录软件生成延时函数 入门学习
  11. 小爱音箱mini系统故障怎么办_Win7蓝牙连接小爱音箱mini的详细教程
  12. rtthread学习之(2)——STM32 系列外设驱动添加指南
  13. HTTPClient模拟登陆开心网001
  14. 重新学javaweb---cookiesession
  15. 这个好玩!用Python识别花卉种类,并自动整理分类!
  16. css深入剖析transform的skew
  17. 【vue】vue用了keep-alive生命周期只执行一次怎么办?
  18. (B站必备)使用BiliBiliTool,全自动完成B 站任务神器!!!
  19. PYNQ之Jupyter Notebook
  20. ps将图片加入背景【实测成功】

热门文章

  1. Python3实现转xmind思维导图文件到excel
  2. mysql主从同步遇到的问题,线程正常,但是没有同步数据
  3. 亚马逊击败IBM 获美国中情局6亿美元云计算订单
  4. 2023年,产业互联网八大趋势
  5. python七夕快乐_七夕送小姐姐!女生勿扰,只适合男孩子的python爬虫!
  6. 林肯公园 Numb 现场
  7. linux sfdisk partition
  8. python实践输出星星_python中怎么打印星星
  9. Win10启动VMware虚拟机结果宿主机蓝屏重启
  10. 变压器输出整流的蓄能电容选取方法