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. ubuntu环境下安装docker遇到的坑

    ubuntu安装docker的前提条件是: 1. Linux 的内核版本在 3.10 或以上: 2. linux 内核要开启 cgroup 和 namespace 功能 可以执行命令:uname –a ...

  2. chrome浏览器和其它浏览器对scrollTop、scrollLeft的获取方法

    chrome浏览器不能通过document.documentElement.scrollTop来获得距上滚动距离,得到的值始终为0:需要用document.body.scrollTop来获取.其它浏览 ...

  3. Sping4之注入参数

    Spring的依赖注入不仅可以注入基本类型,也可以注入包括model,list等等类型 package com.hongcong.test; import org.springframework.co ...

  4. pyparsing自定义解析规则

    1.Word(token) 用于匹配由允许的字符集组成的单词,常见的错误是使用特定字符串Word("expr")匹配"expr" - L {alphas}  字 ...

  5. 大数据入门到精通19--mysql 数据导入到hive数据中

    一.正常按照数据库和表导入 \\前面介绍了通过底层文件得形式导入到hive的表中,或者直接导入到hdfs中,\\现在介绍通过hive的database和table命令来从上层操作.sqoop impo ...

  6. nginx开机启动

    centos 7以上是用Systemd进行系统初始化的 Systemd服务文件以.service结尾,比如现在要建立nginx为开机启动,如果用yum install命令安装的,yum命令会自动创建n ...

  7. python之字典及其方法---整理集

    字典 特点: 使用逗号分隔的key:value形式: 使用大括号括起来: key-value的键值对中,value部分可以是任意类型: 列表.字典不能做为字典的key: 字典是无序的,哪个key-va ...

  8. Python设计模式 - UML - 组合结构图(Composite Structure Diagram)

    简介 组合结构图用来显示组合结构或部分系统的内部构造,包括类.接口.包.组件.端口和连接器等元素,是UML2.0的新增图. 组合结构图侧重复合元素的方式展示系统内部结构,包括与其他系统的交互接口和通信 ...

  9. 手游开发之lua的class函数详解

    众所周知,lua没有类这个概念但其通过table实现了面向对象的“类”.在cocos2dx引擎下提供了class(className, ...)函数方法名,因为在脚本开发中这个接口基本都会用来创建一个 ...

  10. java中解析excel 批量插入数据库

    Facade 层 实现类 (@Service("samePeriodModelImportFacade")) 1.  获取cells 的方法 public Cells getCel ...