Java实现Excel表格数据的导入(兼容xls与xlsx)

  • 目录
    • 依赖
    • 代码
    • 注意点

目录

依赖

<!-- 添加POI的依赖用于Excel的操作 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.0</version></dependency>

代码

public Result doRegisterFromExcel(@RequestParam("file") MultipartFile file){String EXCEL_XLS = "xls";String EXCEL_XLSX = "xlsx";if (file.isEmpty())return ResultGenerator.genFailResult("文件为空");System.out.println(file.getOriginalFilename());List<Boolean> registerResult = new ArrayList<>();try {//根据路径获取这个操作excel的实例Sheet sheet = null;Row row = null;if (file.getOriginalFilename().endsWith(EXCEL_XLS)) {//用于xls文件的读取HSSFWorkbook wb = new HSSFWorkbook(file.getInputStream());sheet = wb.getSheetAt(0);} else if (file.getOriginalFilename().endsWith(EXCEL_XLSX)) {//用于xlsx文件的读取XSSFWorkbook wb = new XSSFWorkbook(file.getInputStream());//根据页面index 获取sheet页sheet = wb.getSheetAt(0);}//实体类集合List<User> users = new ArrayList<>();//循环sheet页中数据从第三行开始,第一行是导入说明,第二行是标题for (int i = 2; i < sheet.getPhysicalNumberOfRows(); i++) {//获取每一行数据row = sheet.getRow(i);User user = new User();//表中第二列,日期if(row.getCell(1)!=null){Cell cell = row.getCell(1);Date d = cell.getDateCellValue();DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");String guarantee_date = "";guarantee_date = formater.format(d);user.setDate(guarantee_date);}//String类型的列,这里最好使用如下的方法。如果使用直接获取String的方法,会发生在表格数据为数字的情况下的异常if(row.getCell(2)!=null){//括号中为列数Cell cell = row.getCell(2);cell.setCellType(CellType.STRING);shljAbnormalGarbage.setChar(cell.getStringCellValue());}//数字类型的列if(row.getCell(3)!=null){shljAbnormalGarbage.setNumber((int)row.getCell(5).getNumericCellValue());}users.add(user);}for (User u : users) {Boolean test = false;registerResult.add(test = userService.addFormExcel(u.getDate(),u.getChar(), u.getNumber()));System.out.println(test);}} catch (Exception e) {e.printStackTrace();}return ResultGenerator.genSuccessResult(registerResult);}

注意点

在获取数据某一个单元格的数据时,要注意如下的方面,最好不要直接使用row.getCell(2).getStringCellValue();应该使用如下代码:

 //String类型的列,这里最好使用如下的方法。如果使用直接获取String的方法,会发生在表格数据为数字的情况下的异常if(row.getCell(2)!=null){Cell cell = row.getCell(2);cell.setCellType(CellType.STRING);shljAbnormalGarbage.setChar(cell.getStringCellValue());}

Java实现Excel表格数据的导入(兼容xls与xlsx)相关推荐

  1. Java中Excel表格数据的导入和导出步骤和方法

    Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表.读取Excel数据表的第一步是创建Workbook(术 语:工作薄),下面的代码片段举例说 ...

  2. Java中Excel表格数据的导入与导出

    该指南的发布为当前svn主干提供了功能.那些在以前版本中查找信息的人应该查看发布的文档. HSSF允许从XLS文件中写入或读取数字.字符串.日期或公式单元格值.在这个版本中,还包括行和列的大小.单元样 ...

  3. java读写excel表格数据

    java读写excel表格数据 java读写excel表格数据 excel类 package excel;import java.io.File; import jxl.Cell; import jx ...

  4. 如何将Excel表格数据批量导入到MySQL数据库中

    最近遇到一个问题,就是如何将excel表格数据中几百上千行的数据导入到数据库中,使用Navicat工具的手动导入一直不成功,所以就选择使用代码的方式来进行导入,过程也比较简单,我们一起来看一下是如何实 ...

  5. php导入excel表格数据,php页面导入excel表格数据-php导入excel 怎么获取excel表格数据...

    PHP如何导出当前页面中的表格至Excel 常用的用PHP读取EXCEL的方法有以下三种,各自有各自的优缺点.个人推荐用第三种方法,因为它可以跨平台使用. 1. 以.csv格式读取 将.xls转换成. ...

  6. Java实现excel大数据量导入

    情景分析: 通常我们通过poi读取excel文件时,若在用户模式下,由于数据量较大.Sheet较多,很容易出现内存溢出的情况 用户模式读取excel的典型代码如下: FileInputStream f ...

  7. matlab批量导入excel表格数据,matlab导入excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......

    如何用matlab读取多个excel表格数据,将每个表格数... 一xlsread()函数,比import简单的多,具体语句:A = xlsread('yourfilename.xls')望高手支招! ...

  8. java poi excel 导入数据库_java POI 处理excel表格数据并导入数据库示例

    java操作Excel最常用的开源组件有poi与jxl.jxl是韩国人开发的,发行较早,但是更新的很慢,目前似乎还不支持excel2007. poi是apache下的一个子项目,poi应该是处理ms的 ...

  9. java读取excel表格数据

    1 背景介绍 java读取excel文件有很多的应用场景,如读取数据后入库,或者做数据分析,预处理等等,那么如何做到读取文件呢,下面看具体步骤. 笔者使用环境是IDEA2020.1,jdk8. 2 导 ...

最新文章

  1. RPC是什么?为什么要学习RPC?
  2. Google Chrome 调试JS利器
  3. NSString 使用方法总结
  4. 安卓相机 高帧率_Android MediaCodec和摄像头:如何实现更高的帧速率从相机获取帧原始数据?...
  5. Java 8 – Date API的新增功能
  6. mysql8.0root连接失败_mac 下jdbc连接mysql 8.0 失败
  7. 转 json数组对象和对象数组
  8. 中国银联:金融概述、收单和清算、代收代付
  9. 银川JW万豪酒店与银川万怡酒店双品牌酒店启幕
  10. win32项目中使用 skia渲染的一个编译问题
  11. 虚拟搭建局域网模拟器_如何建立虚拟局域网
  12. MSDC 4.3 接口规范(30)
  13. 4G 优盘格式化后变4M 利用量产工具修复~~~
  14. 信奥一本通2071题
  15. Hypervisor定义、种类及产品介绍
  16. 数学建模笔记 day-03
  17. 初二数学作业能用计算机算吗,数学作业用计算器来计算,这种做法对吗?
  18. 最新聚合官方个人免签支付系统源码+服务器打包
  19. win10主题保存位置
  20. Anaconda+Paddle

热门文章

  1. S4 HANA BP 新增客商公司代码数据
  2. python多媒体应用:使用python和win32gui一步步教你按需截图和图片文字识别
  3. Java笔记整理(基础)
  4. 【Python】Python知识点小记
  5. BypassUAC方式总结
  6. 帝国CMS7.5仿励志一生文章网站源码 带手机版+火车头采集
  7. Java使用S7协议连接西门子PLC1200、1500
  8. 易飞ERP 算号服务 注册服务 服务器迁移 实施 二开 全版本
  9. Excel常用函数公式10例
  10. 【题解】【PTA-Python题库】第4章-13 求误差小于输入值的e的近似值 (20 分)