1.前端代码

$("#upload").on('click', function() {
  var formData = new FormData();
  var name = $("#uploadFile").val();
  formData.append("fileupload", $("#articleImageFile")[0].files[0]);
  formData.append("name", name); //这个地方可以传递多个参数
  if(name == null || name == ''){
    alert("请选择上传文件");
  }
  $.ajax({
    type: 'post',
    url: commenUrl + "/fileUpload",
    async: false,
    data: formData,
    // 告诉jQuery不要去处理发送的数据
    processData: false,
    // 告诉jQuery不要去设置Content-Type请求头
    contentType: false,
    beforeSend: function() {
    console.log("正在进行,请稍候");
    },
    success: function(data) {
      if(data.code == 0) {
        alert("导入成功");
        $("#myModal").modal('hide');//隐藏模态框
      }else {
        alert("导入失败");
      };
    }
  });
});

2.控制层代码

    @RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
@ResponseBody
public void fileUpload(@RequestParam("fileupload")MultipartFile fileupload, HttpServletRequest request,
HttpServletResponse response, ApiJsonResult result) {
try {
result = uploadService.fileUpload(fileupload,result);
} catch (Exception e) {
e.printStackTrace();
result.setCode(StatusCodeEnum.EXTREMELY.getCode());
result.setMsg(StatusCodeEnum.EXTREMELY.getDesc());
}
JsonWebPrintUtils.printApiResult(request, response, result);
}

3.实现代码

  excel中存在纯数字的数据时,可以使用getNumericCellValue()取值,或者使用setCellType(Cell.CELL_TYPE_STRING)统一设置为字符串格式读取。实际应用中可根据实际情况在读取过程中对读取到的数据进行校验返回错误信息到客户端。

  @Override
public ApiJsonResult fileUpload(MultipartFile fileupload, ApiJsonResult result) throws IOException{
     //获取文件名
String fileName = fileupload.getOriginalFilename();
Workbook workbook = getWorkbook(fileName,fileupload);

      if(fileName.endsWith(XLS)) {
        //2003
        workbook = new HSSFWorkbook(fileupload.getInputStream());
      }else if(fileName.endsWith(XLSX)) {
        //2007
        workbook = new XSSFWorkbook(fileupload.getInputStream());
      }

     //创建工作表sheet
Sheet sheet = this.getSheet(workbook, 0);

      //获取sheet中数据的行
      int rows = sheet.getPhysicalNumberOfRows();

      List<UploadTest> lsit = new ArrayList<>();//用于存放读取到的数据

      for(int i=1;i<row.length;i++){//从第二行开始读取数据

        Row row = sheet.getRow(i);

        row.getCell(0).setCellType(Cell.CELL_TYPE_STRING);//设置读取数据类型为string
        row.getCell(1).setCellType(Cell.CELL_TYPE_STRING);//设置读取数据类型为string
        String value1 = row.getCell(0).getStringCellValue();//第一列的值
        String value2 = row.getCell(1).getStringCellValue();//第二列的值

        UploadTest test = new UploadTest(); //创建实体类接受值

        test.setPig(value1);

        test.setDog(value2);

        list.add(test);

      }

      //将数据写入数据库

      ...............省略

     return this.getCarAndDeviceBindData(sheet,result);
}

poi实现Excel文件的读取的更多相关文章

  1. java使用POI实现excel文件的读取,兼容后缀名xls和xlsx

    需要用的jar包如下: 如果是maven管理的项目,添加依赖如下: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --&g ...

  2. 使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10

    使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10 [问题点数:40分,结帖人xieyongqiu]             不显示删除回复             ...

  3. Java使用POI操作Excel文件

    1.简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式文件读和写的功能. 2.依赖的jar包 <!-- ex ...

  4. java使用POI操作excel文件,实现批量导出,和导入

    一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...

  5. excel to datatable (c#用NPOI将excel文件内容读取到datatable数据表中)

    将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable /// <sum ...

  6. 条形码的应用三-----------从Excel文件中读取条形码

    条形码的应用三------从Excel文件中读取条形码 介绍 上一篇文章,我向大家展示了生成多个条形码并存储到Excel文件中的一个方法.后来我又有了个想法:既然条码插入到excel中了,我可不可以从 ...

  7. Java Struts2 POI创建Excel文件并实现文件下载

    Java Struts2 POI创建Excel文件并实现文件下载2013-09-04 18:53 6059人阅读 评论(1) 收藏 举报 分类: Java EE(49) Struts(6) 版权声明: ...

  8. 【asp.net】asp.net实现上传Excel文件并读取数据

    #前台代码:使用服务端控件实现上传 <form id="form1" runat="server"> <div> <asp:Fil ...

  9. POI生成EXCEL文件

    POI生成EXCEL文件 一.背景 根据指定格式的JSON文件生成对应的excel文件,需求如下 支持多sheet 支持单元格合并 支持插入图片 支持单元格样式可定制 需要 标题(title),表头( ...

随机推荐

  1. v-for key

    key 当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略.如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素 ...

  2. Longest Palindrome 最长回文串问题

    1.题目 Given a string s, find the longest palindromic substring in s. You may assume that the maximum ...

  3. [原创] debian 9.3 搭建Jira+Confluence+Bitbucket+crowd+seafile (零) 修改端口的问题

    [原创] debian 9.3 搭建Jira+Confluence+Bitbucket+seafile  (零)  修改端口的问题 来来来,今天说个没有人说过的事, 搭建好Jira+Confluenc ...

  4. 在create-react-app里使用ant design

    使用create-react-app创建的项目,要使用ant design. 1.首先进入项目根目录,yarn add antd. 2.在App.css引入 样式文件,@import '~antd/d ...

  5. 动态在线扩容root根分区大小的方法详解

    前言 本文主要介绍了关于动态在线扩容root根分区大小的相关内容,分享出来供大家参考学习,下面话不都说了,来一起看看详细的介绍吧. ? 1 qemu-img resize yourname.img + ...

  6. Intro to Airplane Physics in Unity 3D – 2017 and 2018

    Info:DescriptionHave you ever wanted to build your own Airplane Physics using the Rigidbody componen ...

  7. CP IPS功能测试

    测试环境:CP 15000硬件 测试拓扑: Step1:重新安装Check_Point_R80.10_T479_Gaia并且打补丁 Step2:初始化CP并且部署模式为Management和Gatew ...

  8. windows安装MongoDB副本集,通过Java程序实现数据的插入与查询

    我本地的环境 MongoDB 4.0 jdk 1.7.x 安装参考主要博客 https://blog.csdn.net/wanght89/article/details/77677271#commen ...

  9. JavaSE基础知识(6)—异常和异常处理

    一.异常的理解及体系结构图 1.理解 异常:程序运行过程中发生的不正常现象.java中的错误: 语法错误 运行异常 逻辑错误 2.体系图 java程序在执行过程中所发生的异常分为两类: Error:J ...

  10. 除非你是BAT,前端开发中最好少造轮子

    站在前人的肩膀上 HTML.CSS.JavaScript是前端的根基,这是无可否认的事实.正如一辆车当然都是由一堆钢板和螺钉组成的,但是现在还有人拎着个锤子敲敲打打的造车吗?李书福说过,“汽车不过是四 ...