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. C Mergeable Stack(list超好用)

    ZOJ  4016 list用法https://www.cnblogs.com/LLLAIH/p/10673068.html 一开始用普通的栈做,超内存,链表模拟栈也没写出来orz.补题发现list超 ...

  2. AlphaGo的前世今生(三)AlphaGo Zero: AI Revolution and Beyond

    这是本专题的第三节,在这一节我们将以David Silver等人的Natrue论文Mastering the game of Go without human knowledge为基础讲讲AlphaG ...

  3. Java框架spring 学习笔记(六):属性注入

    属性注入:创建对象的时候,向类里面的属性设置值. Java属性注入有三种方法: 使用set方法注入 有参数构造注入 使用接口注入 Spring框架里面的属性注入方式 有参数构造属性注入 set方法属性 ...

  4. cnpm install -g live-server 安装服务

    cnpm  install -g live-server     指令会在浏览器自动打开页面

  5. 第四周博客作业 <西北师范大学| 周安伟>

    一,助教博客链接https://home.cnblogs.com/u/zaw-315/ 二,本周点评作业量点评23份,对提交的优秀作业代码进行运行一份博客问题无法点评问题博客链接:https://ww ...

  6. bootloaderd的再解析

    boot的0脚和1脚可以选择启动方式,以前只知道可以选择的方式是nandflash启动,或者选择从norflash启动,当选择nandflash启动时,cpu看到的0地址是ram的0地址,根据是nan ...

  7. docker简单搭建gitlab

    docker启动非常简单: docker run --detach --hostname 192.168.0.33 --publish 443:443 --publish 80:80 \ --publ ...

  8. CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-1虚拟机安装及环境初始化

    1.软件准备: VMware-workstation-full-14.1.2-8497320.exe CentOS-7-x86_64-DVD-1804.iso 2.VMare激活码: AU5WA-0E ...

  9. mysql 中启动服务的命令 、登录命令、退出命令 mysql 的常用命令

    1.cmd 以管理员执行 下面命令 启动服务 :net start mysql57 关闭 服务:net stop mysql57 查看mysql 的版本信息 : mysql -V 指定主机地址登录: ...

  10. ubuntu18.04微信小程序学习笔记

    安装微信小程序开发工具 安装 https://github.com/cytle/wechat_web_devtools 创建快捷方式 sudo nautilus //在/usr/share/appli ...