使用POI读取Excel表格中数据

已经在 使用POI读取Excel表格中数据2优化。(https://blog.csdn.net/qq_36570464/article/details/107053355)

https://blog.csdn.net/qq_36570464/article/details/107053355

背景

自己最近在研究自动换测试,在进行参数化时候,会对把用例写在Excel表格中,然后通过Java来取表格中数据,进而进行参数化。

问题

那么,我们的表格可能回事这么一个情况:

表格中的单元格里出现没有输入的情况(图片中红色部分),如何通过POI进行读取,或者如何处理?预期结果不用考虑。

代码

只贴了获取表格中数据代码,其他不是本文内容。

@DataProviderpublic Object[][] getParamExcel() throws IOException {File file = new File("/param.xlsx");XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(file));//获得表格中的第0个SheetXSSFSheet sheet = workbook.getSheetAt(0);//得到有多少行int numberRows = sheet.getPhysicalNumberOfRows();//获得第一行有多少列int numberCells=sheet.getRow(0).getPhysicalNumberOfCells();//获得第一行第一列所在的位置int numberFirst = sheet.getRow(0).getFirstCellNum();//创建一个Object二维数组,用来作为参数返回。//因为第一行是说明,则跳过第一行,所以行数减一Object[][] data = new Object[numberRows - 1][];//创建一个保存列的对象XSSFRow row = null;// 因为第一行是说明,则跳过第一行,所以行数减一//sheet.getFirstRowNum() 获得第一行开始的位子,可能不从第一行开始(i=0)//numberRows - 1 表示除去第一行说明,实际数据有多少行for (int i = sheet.getFirstRowNum(); i < numberRows - 1; i++) {//得到第i+1行,即第二行的实际数据row = sheet.getRow(i + 1);// 创建一个字符数组,用来保存一行中,每一列的数据String[] strings = new String[numberCells];//row.getFirstCellNum() 获得一行中实际数据所在列,不一为第一列,如图第4行for (int j = numberFirst; j < numberCells; j++) {// 数据是通过key-value方式保存,遍历是会出现空指针异常(图中红色部分)。//出现的多余没有输入的单元格会出现异常,并对没有数据输入的单元格(红色部分)是进行空字符处理try {//设置为字符类型,这里主要是因为在获取Excel数据时,//数字出现小数点,主要用于不加小数点,可以简单这么理解。大家可以看一下源码就知道什么原因了row.getCell(j).setCellType(CellType.STRING);} catch (NullPointerException e) {//出现空指针异常,说明数据没有输入,即空数据,做空字符串处理strings[j] = "";//跳过当前循环continue;}// 保存数据strings[j] = row.getCell(j).getStringCellValue();}//把获得数据添加到datadata[i] = strings;}return data;}

后言

当然,该方法不是一个很好的方法,有些还有些特殊情况处理不了。
如果你有什么改进或者更好的方法,欢迎留言。

使用POI读取Excel表格中数据相关推荐

  1. poiexcel 读取引用列_java用poi读取Excel表格中的数据

    Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版. Apache POI ...

  2. python读取excel表格-python读取excel表格中的数据

    使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下: import xlrd #导入xlrd模块 class ExcelData(): def __init ...

  3. java实现读取excel表格中的数据,兼容xls和xlsx

    前言 利用 java 实现读取 excel 表格中的数据,兼容 xls 与 xlsx 格式,不用额外做区分,写不同的实现方法. 引入的依赖包 <dependency><groupId ...

  4. java搜索excel表格里的数据_Java读取Excel表格中的数据

    前言 本文主要讲述如何在Java中读取Excel表中的数据并在控制台输出,实现工具为Eclipse 提示:以下是本篇文章正文内容,下面案例可供参考 一.添加jar包文件 描述:在Java中导入导出Ex ...

  5. Java读取Excel表格中的数据

    文章目录 前言 一.添加jar包文件 1.在Eclipse工程下新建lib文件夹 2.复制jar包 3.将jar包粘贴到Eclipse中 4.配置构建路径 二.案例代码 1.新建类 2.获取Excel ...

  6. 如何读取Excel表格中不同sheet表的同一位置单元格数据,并绘制条形图呢?

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 今天,有位朋友在群里面咨询了一个问题:如何读取Excel表格中"不同sheet表"的同一位置单元格数据,并绘制条形图呢? 有人提议 ...

  7. python3读取excel数据-python3 读取Excel表格中的数据

    需要先安装openpyxl库 通过pip命令安装: pip install openpyxl 源码如下: #!/usr/bin/python3 #-*- coding:utf-8 -*- import ...

  8. matlab数据变成一列数据,matlab读取excel表格列数据-matlab导入excel后,怎么把数据提取成一列?...

    怎么用matlab读取excel表格中的一列十六进制数据? x=xlsread('oillack.xls','sheet1','a1:a73') excel文件名是oillack.xls,sheet1 ...

  9. python 显示表格数据_python显示excel表格数据-怎么用python读取excel表格的数据

    怎么用python读取excel表格的数据 #导入包 import xlrd #设置路径 path='C:\\Users\\jyjh\\Desktop\\datap.xlsx' #打开 data=xl ...

最新文章

  1. SpringBoot入门和配置
  2. NYOJ 636 世界末日
  3. C语言满分代码:L1-056 猜数字 (20分)
  4. mysql 枚举_是否推荐使用MySQL的enum类型?
  5. windows10完全删除mysql_Windows 10系统下彻底删除卸载MySQL的方法教程
  6. 盈世邮箱服务器pop3,Coremail私有协议为什么比POP3协议、IMAP协议更好
  7. SEI文献整理2:A Review of Radio Frequency Fingerprinting Techniques(2020)
  8. Crime and Punishment
  9. EasyX 窗口如何最大化,以及拖拽调整大小
  10. FishRedux完成一个玩安卓客户端
  11. gnuplot命令大全
  12. hdmi怎么支持2k分辨率_HDMI更新了!HDMI线用户忍受了一年的问题,终于能解决了...
  13. android自带的webview有广告,android webview 拦截广告
  14. python--爬虫--获取和解析存储网页内容--以薄荷网为例
  15. PC实现Win10/原生安卓双系统
  16. Residual Reinforcement Learning for Robot Control
  17. 移植一个抖音贴纸组件到Flutter
  18. 专家:应对禽流感需储备不同种药物
  19. MQL5 COOKBOOK: 使用不同的打印模式
  20. php readfile 图片,使用php中的readfile能否读图片

热门文章

  1. 数据仓库,数据集市,数据孤岛,数据湖,数据中台
  2. WebSocket 长连接详解
  3. android 定时器重置,Android定时器延迟和重置
  4. ARM存储器之:协处理器CP15
  5. Vscode - 修改插件安装目录
  6. 可以做不同口味寿司的机器人
  7. word怎么让封面、摘要、目录没有页码,而正文显示从1开始的页码
  8. 解决 Mysql 知道表名不知道在哪个库查询具体哪个库
  9. QT+OSG/osgEarth编译之五:libjpeg+Qt编译(一套代码、一套框架,跨平台编译,版本:libjpeg-9e)
  10. 英语十大词性之五 - 名词