java导入Excel表格数据
首先导入Excel数据需要几样东西
第一需要两个依赖包,这里直接是在pom注入依赖
- <!--excel-->
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- <version>3.10.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi-ooxml</artifactId>
- <version>3.9</version>
- </dependency>
第二就是需要一个工具类,就和分页的工具类一个性质,这里就不贴出来了太长 。百度搜索 “ExcelUtil”
代码中用到的js文件 jquery-3.1.1.min.js、layer.js
下面开始贴js代码
- //h5的话,写一个文件域就好了
//上传Excel文件
uploadFile() {- var file = $("#upload").val();
- file = file.substring(file.lastIndexOf('.'), file.length);
- if (file == '') {
- layer.open({
- content: '上传文件不能为空!'
- , skin: 'msg'
- , time: 2 //2秒后自动关闭
- });
- } else if (file != '.xlsx' && file != '.xls') {
- layer.open({
- content: '请选择正确的excel类型文件!'
- , skin: 'msg'
- , time: 2 //2秒后自动关闭
- });
- } else {
- this.ajaxFileUpload();
- }
- },
- ajaxFileUpload() {
- var formData = new FormData();
- formData.append("file", document.getElementById("upload").files[0]);
- $.ajax({
- url: "${ctx}/bookcase/InputExcel",
- type: "POST",
- async: true,
- data: formData,
- processData: false,
- contentType: false,
- beforeSend: function () {
- layer.open({
- type: 2
- , content: '文件上传中,请稍候'
- });
- },
- success: function (data) {
- layer.closeAll();
- data = JSON.parse(data);
- if (data.state == 200) {
- layer.open({
- content: data.message
- , skin: 'msg'
- , time: 1 //2秒后自动关闭
- });
- window.location.reload();
- } else {
- layer.open({
- content: data.message
- , skin: 'msg'
- , time: 2 //2秒后自动关闭
- });
- }
- }
- });
- }
- },
到这里页面的的操作就差不多了,下面是java的操作
- @RequestMapping("InputExcel")
- @ResponseBody
- public ResultEntity InputExcel(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
- ResultEntity result = new ResultEntity();
- if (!file.isEmpty()) {
- try {
- //获取原始的文件名
- String originalFilename = file.getOriginalFilename();
- String fileType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
- //默认从第一行开始读取
- Integer startRows = 1;
- //获取输入流
- InputStream is = file.getInputStream();
- List<DoorAntRel> bindingList = new ArrayList<>();
- List<Bookcase> bookcaseList = new ArrayList<>();
- List<String[]> strings = ExcelUtil.readData(fileType, startRows, true, is);//这里使用输入流把数据拿到
- //遍历Excel表每一行的数据
- for (String[] str : strings) {//这里比较特殊,肯定有更简便的办法,暂时我就只有这个水平、、、尴尬
- Bookcase bookcase = new Bookcase();
- DoorAntRel doorAntRel = new DoorAntRel();
- bookcase.setName(str[1]);
- bookcase.setType(str[2]);
- bookcase.setCom(Integer.parseInt(str[3]));
- doorAntRel.setDoorName(str[4]);
- doorAntRel.setDoorNo(Integer.parseInt(str[5]));
- doorAntRel.setAntennaNo(Integer.parseInt(str[6]));
- doorAntRel.setReadWriterId(Integer.parseInt(str[7]));
- doorAntRel.setBookcaseId(Integer.parseInt(str[8]));
- doorAntRel.setBadFlag(Integer.parseInt(str[9]));
- doorAntRel.setDoorSlot(Integer.parseInt(str[10]));
- bindingList.add(doorAntRel);
- bookcaseList.add(bookcase);
- }
- boolean bookState = bookcaseService.insertOrUpdateBatch(bookcaseList);
- boolean doorState = doorAntRelService.insertOrUpdateBatch(bindingList);
- if(bookState){
- if(doorState){
- result.setState(HttpCode.SUCCESS);
- result.setMessage("上传文件成功!");
- return result;
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- result.setState(HttpCode.FAILED);
- result.setMessage("上传文件失败!");
- return result;
- }
到这里差不多导入功能就差不多了,包括业务层、数据访问的接口我就不写了,也就是一条insert的事情
java导入Excel表格数据的更多相关文章
- JAVA处理Excel表格数据并写入数据库
package com.hncj.test; import java.io.FileInputStream; import java.sql.Connection; import java.sql.D ...
- Vue3实现动态导入Excel表格数据
1. 前言 在开发工作过程中,我们会遇到各种各样的表格数据导入,大部分我们的解决方案:提供一个模板前端进行下载,然后按照这个模板要求进行数据填充,最后上传导入,这是其中一种解决方案.个人认为还有另外 ...
- tp3.2和Bootstrap模态框导入excel表格数据
导入按钮 <button class="btn btn-info" type="button" id="import" data-to ...
- poi导入excel表格数据到数据库的时候,对出生日期的校验
出生日期格式为8位数字的字符串 如:yyyyMMdd 规则:yyyy大于1900并小于当前时间,月.日 按日期规则校验 //解决读过来的字符串显示为科学计数法问题 BigDecimal bd = ne ...
- 用多线程优化Excel表格数据导入校验的接口
公司的需求,当前某个Excel导入功能,流程是:读取Excel数据,传入后台校验每一条数据,判断是否符合导入要求,返回给前端,导入预览展示.(前端等待响应,难点).用户再点击导入按钮,进行异步导入(前 ...
- java实现excel表格导入数据库表
导入excel就是一个上传excel文件,然后获取excel文件数据,然后处理数据并插入到数据库的过程 一.上传excel 前端jsp页面,我的是index.jsp 在页面中我自己加入了一个下载上传文 ...
- 将包含经纬度点位信息的Excel表格数据导入到ArcMap中并输出成shapefile
将包含经纬信息的Excel表格数据,导入到ArcMap中并输出成shapefile,再进行后面的操作.使用这种方法可以将每一个包含经纬信息的数据在ArcMap中点出来. 一.准备数据 新建Excel表 ...
- Excel表格数据导入MySQL数据库
有时候项目需要将存在表格中的批量数据导入数据库,最近自己正好碰到了,总结一下: 1.将excel表格另存为.csv格式文件,excel本身的.xlsx格式导入时可能会报错,为了避免不必要的格式错误,直 ...
- Java操作Jxl实现导出数据生成Excel表格数据文件
实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...
随机推荐
- java8--List转为Map、分组、过滤、求和等操作
利用java8新特性,可以用简洁高效的代码来实现一些数据处理~ 定义1个Apple对象: public class Apple { private Integer id; private String ...
- 梦工厂实验室 蛇形填数 dfs
问题 D: 蛇形填数 时间限制: 3 Sec 内存限制: 64 MB提交: 28 解决: 5[提交][状态][讨论版] 题目描述 在n*n方阵里填入1,2,...,n*n,要求填成蛇形.例如n=4 ...
- 宝塔Linux 8888 进不去
一.前言 导致该问题的原因是 Python 版本问题,可能是您更新了 python 的问题.参考宝塔问题的解决方案做的小结.仅供自己做笔记,不作其他用途. 二.解决方案 1.进入shell 命令行,输 ...
- ThinkPHP3.2.3学习笔记5---模板(一)
一.模板简介 此文中的学习笔记部分资料是来自于thinkphp官方文档,http://document.thinkphp.cn/manual_3_2.html#template 本章的内容主要讲述了如 ...
- C#、Unity网络通信中基于字节码的自定义协议解码,C#版ByteBuffer
http://www.oschina.net/code/snippet_42170_37516 C#.Unity基于字节的网络通信中字节码解析类,类似java中的ByteBuffer,不过这个实现是参 ...
- Codevs 1569 最佳绿草
1569 最佳绿草 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 贝茜正计划着这一天如何美美地咀嚼春天的绿 ...
- 聪明的质监员(codevs 1138)
题目描述 Description 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n 个矿石,从1到n 逐一编号,每个矿石都有自己的重量wi 以及价值vi.检验矿产的流程是:见图 ...
- sql server之exists用法
- Codeforces 1132D(二分模拟)
要点 二分显然,关键在于怎么判断 题解方法:开k个队列代表每个时间有哪些电脑会挂掉,这部分O(n)预处理一下,之后扫一遍时间,每个时间点贪心选取最靠前的会挂的电脑未雨绸缪给它充电,然后看看充电以后要不 ...
- ZJOI2017 day2 T2 线段树 想法题
考完D2发现自己简直zz了...花式扔基本分 首先这道题有个显然的套路:树上一些点到一个定点的距离和=这些点深度和+点数*定点深度和-2*lca深度和 ——上一次见这个套路是LNOI2014,上次做的 ...