Java实现Excel批量导入数据
Excel的批量导入是很常见的功能,这里采用 Jxl实现,数据量或样式要求较高可以采用 poi
框架环境:Spring + SpringMvc(注解实现)
首先导入依赖jar包
<dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId><version>2.6.10</version> </dependency>
前端页面–jsp(enctype必须为"multipart/form-data")
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %><div style="width: 600px;"><form class="form" method="post" data-submit="ajax" enctype="multipart/form-data" action="/hpersonnel/import.do">//<input type="hidden" name="id" value="<%= request.getParameter("id") %>" /> <div class="form-group"> <label class="form-label w100"> </label><label class="form-label ">1、下载模板。<a class="btn btn-default submit-form" href="/template/personnel.xls">下载</a></label></div><div class="form-group"><label class="form-label w100"> </label><label class="form-label ">2、按照模板表头填写内容,请勿修改文件格式</label></div><div class="form-group"><label class="form-label w100"> </label><label class="form-label ">3、<input type="file" name="file" /></label></div> <div class="btns dialog-button"><button class="dialog-btn-yes" type="submit">提交</button><button class="dialog-btn-no" type="button" onclick="app.closeDialog(this)">取消</button></div> </form> </div>
视图模板
Controller
@ResponseBody @RequestMapping(value = "import") public Object import(MultipartFile file) { if (file.isEmpty()) {return ResultObject.failure("文件为空");}ResultObject result = new ResultObject();//记录集合List<Map> mapList = new ArrayList<Map>();//校验结果boolean reqFlag = true;//回复消息String reqMsg = "";//报错消息数Integer error = 0;//解析文件try {//转换成输入流InputStream is = file.getInputStream();//得到excelWorkbook workbook = Workbook.getWorkbook(is);//得到sheetSheet sheet = workbook.getSheet(0);//得到列数int colsNum = sheet.getColumns();//得到行数int rowsNum = sheet.getRows();if (rowsNum == 1) return ResultObject.failure("没有数据");//单元格Cell cell;//数据校验for (int i = 1; i < rowsNum; i++) {//第一行是标题,所以i从1开始Map<Integer, Object> map = new HashMap<Integer, Object>();for (int j = 0; j < colsNum; j++) {cell = sheet.getCell(j, i);//第一个参数是列.第二个参数是行if (j < 4 && "".equals(cell.getContents())) { //----这里判断必填项(前4列)reqFlag = false;reqMsg += "第" + (i + 1) + "行错误,错误信息:" + "必填项缺漏";reqMsg += "<br>";error++;break;}String cellString = cell.getContents();cellString = cellString.trim();switch (j) {case 1: {//进行校验处理,例如手机号if (!StringUtil.isMobileNo(cellString)) {reqFlag = false;reqMsg += "第" + (i + 1) + "行错误,错误信息:" + "联系电话有误";reqMsg += "<br>";error++;} else {map.put(j, cellString);}break;}case 2: { ### break; }case 3: { ### break; }//无需校验,归入defaultdefault: {map.put(j, cell.getContents());}}}if (reqFlag) {//校验通过mapList.add(map);}}} catch (IOException e) {e.printStackTrace();} catch (BiffException e) {e.printStackTrace();}//入库try {if (mapList.size() > 0 && reqFlag) {//此处try,catch应优化为事务处理maplist实现全记录成功或失败result.setSuccess("提交成功");} else { if (error > 10) {//设置要显示的错误数int index = StringUtil.getIndex(reqMsg, 10, "<br>");reqMsg = reqMsg.substring(0, index + 4);reqMsg += "未显示错误数:" + (error - 10) + "条";reqMsg += "<br>";}result.setFailure(reqMsg);}} catch (Exception e) {result.setFailure("入库错误,请联系管理员!");e.printStackTrace();}return result; }
Java实现Excel批量导入数据相关推荐
- 【转帖】Java实现Excel批量导入数据
这篇文章主要为大家详细介绍了Java实现Excel批量导入数据,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Excel的批量导入是很常见的功能,这里采用Jxl实现,数 ...
- SpringMVC框架通过Excel批量导入数据
文章目录 SpringMVC框架通过Excel批量导入数据 1.导入需要的jar包 2.配置文件 3.创建Java对象类 4.解析Excel表格数据的工具类 5.前端请求 6.Controller处理 ...
- Spring Boot 实现excel 批量导入数据(模板下载 ->数据导入->导入失败表格下载)
批量导入数据以用户为例[不贴数据库操作代码,都是简单的插入和查询操作自己写] 1 导入依赖 2 批量导入模板下载 3 批量导入数据 准备工作 实现代码 测试接口 4 下载导入失败表格 5 实体类 6 ...
- java使用POI实现Excel批量导入数据。
1.背景 项目中有使用easypoi,处理常规excel问题,但是现在有个需求,需要动态生成导出的报表字段.同时,根据导入的excel,增加数据信息.(有可能会出现,导入的报表是几天前下载的,不会最新 ...
- excel批量导入数据
这个功能也是我以前项目中经常用到的,感觉很实用,必须拿来分享下: excel进行批量导入数据,结合struts2+ajax 导入的视图:batchAdd.ftl(视图无关紧要的,可以换成其他任何视图, ...
- Springboot Excel批量导入数据
POI处理Excel <!-- poi处理excel --><dependency><groupId>org.apache.poi</groupId>& ...
- Java实现Excel批量导入数据库
springboot实现Excel批量导入数据库 前言:项目开发中最容易碰到的需求即将Excel数据批量上传到数据库中存储 -> Java实现,Excel数据表,MySQL数据库,具体步骤如下- ...
- EXCEL批量导入数据MVC
这里简单实现EXCEL的批量导入 直接看代码,里面有注释 前端页面实现 @{ ViewBag.Title = "批量添加数据"; //Layout = null; } href=& ...
- java实现excel批量导入图片到服务器
使用easypoi批量导入excel数据到数据库,excel中的图片上传到服务器 1.引入依赖 2.实体类demo 3.测试的excel文档样式 5.服务器文件操作工具类 6.IDUtils工具类 7 ...
最新文章
- VC++从txt文本中读取字符和数字
- 录制声音并且播放录取的声音
- ThinkPHP中的视图二
- python编辑器和终端_从python curses程序运行终端文本编辑器
- B端产品方法论:从流量思维转向客户服务
- 机器学习模型 知乎_机器学习-模型选择与评价
- c# 与 c++ 界面同框终极技巧
- PageAdmin建站系统模板制作教程1:Razor简介
- 软件关闭excel但是进程中还存在原因_从软件视角看波音737事故系列述评之一:软件普适化下的能力建设...
- eclipse插件之——PropertiesEditor
- 数字盲打怎么练_数字键盘区的功能及指法技巧
- 安装inotify-tools监控工具
- 8th 本周工作量及进度统计
- LocalDateTime计算两个日期时间差
- 汇添富基金总经理张晖:以高质量发展打造中国最受认可的资产管理品牌
- unix下ODBC连接MySQL编程_通过unixODBC访问PostgreSQL数据库
- 计算机金山打字基础,金山打字通电脑版
- 网线水晶头制作的线序
- 百度蜘蛛IP功能说明初稿
- 这些那些非代码之罪的坑
热门文章
- java编写的atm机项目结题报告_《计算机学院视频教程网站的创建》教学研究项目结题报告.pdf...
- 甲方安全之仿真钓鱼演练(邮件+网站钓鱼)
- aix查看oracle客户端位数,查看系统硬件/软件配置/系统位数
- [league/climate]一个功能健全的命令行功能操作库
- yolov5-6.0训练自己的模型
- 五种方法让你的软文像新闻
- 稳定高效Linux虚拟主机业务完整解决方案
- 华硕笔记本r414u怎么安装键盘_华硕笔记本怎么安装系统|华硕R414UV7200安装Win10专业版64位教程...
- CPU综合设计实验报告
- 20个计算机英语关键词,英语微课堂:20个专业体育英语术语,秒懂赛场关键词!...