selenium excel java_Java+Selenium——利用POI读写excel文件(因环境此篇为参考)

本篇介绍一个第三方工具POI,由于Java的跨平台特性,所以Java没有直接操作excel文件的库支持。

在自动化测试,有些我们的测试数据是放到excel文件中,所以需要懂得如何操作获取excel内的内容。

1.下载POI

打开网站http://poi.apache.org/download.html,选择下面3.16版本下载。

cd4683af9d7ee1a9b5cac95d788e9ec6.png

选择ZIP包下载。

346ed55e37d0114f297cef0edfa42949.png

下载完后解压,文件结构如下

00d011a3139ae6c3e5e2beef4ac5d894.png

2. 把POI文件添加在你Selenium当前项目的library中

先新建一个文件夹,把解压出来的所有的xx.jar都放在新的文件夹,

然后右键你的eclipse工程> Build path > Configure build path > 点击lib  > Add external jar,新建文件夹内所有的xxx.jar都选中。

或者,你只需要以下几个jar文件就可以。

01513aac4c5fb07998d83f067e8ecadb.png

注意,这些jar文件不在同一个路径,你需要到不同路径去拷贝复制到一个新文件夹,然后把这个文件夹的所有jar文件拷贝到你eclipse项目下的Files文件夹,

需要右键你工程,新建一个叫Files的文件夹。我的项目,采取这种方法,我不希望拷贝全部jar到项目lib中。

3. 准备一个test-data.xlsx文件

桌面新建一个test-data.xlsx,然后输入如下内容,并且把这个文件放到eclipse项目中。

f33b1787b18473dd07051c0095a50f94.png

4..新建一个ReadExcel.java的文件,输入如下代码。

packagelessons;importjava.io.File;importjava.io.FileInputStream;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;public classReadExcel {public static voidmain(String[] args) {try{//指定excel的路径

File src = new File(".\\Files\\test-data.xlsx");//加载文件

FileInputStream fis = newFileInputStream(src);//加载workbook

@SuppressWarnings("resource")

XSSFWorkbook wb=newXSSFWorkbook(fis);//加载sheet,这里我们只有一个sheet,默认是sheet1

XSSFSheet sh1= wb.getSheetAt(0);//开始读取第一行第一列的数据

System.out.println(sh1.getRow(0).getCell(0).getStringCellValue());//读取第一行第二列内容

System.out.println(sh1.getRow(0).getCell(1).getStringCellValue());//读取第二行第二列内容

System.out.println(sh1.getRow(1).getCell(0).getStringCellValue());//读取第二行第二列内容

System.out.println(sh1.getRow(1).getCell(1).getStringCellValue());//获取实际总行数

System.out.println(sh1.getPhysicalNumberOfRows());//获取实际总列数

System.out.println(sh1.getPhysicalNumberOfRows());

}catch(Exception e){

System.out.println(e.getMessage());

}

}

}

我尝试找了很久,发现有获取excel内sheet总行数的方法,我说的行是值水平上一行数据,叫行。但是没有获取总列数的方法。POI确实没有获取总列数方法。上面的测试文件一共有4行2列数据。

6.换成循环打印excel内数据

由于我们知道获取总行数的方法,至于列数,我们只能事先确定,例如上面事先确定是2列,但是不确定有多少行。这个只是循环遍历当前sheet的内所有有数据的单元格。

packagelessons;importjava.io.File;importjava.io.FileInputStream;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;public classReadExcel {public static voidmain(String[] args) {try{//指定excel的路径

File src = new File(".\\Files\\test-data.xlsx");//加载文件

FileInputStream fis = newFileInputStream(src);//加载workbook

@SuppressWarnings("resource")

XSSFWorkbook wb=newXSSFWorkbook(fis);//加载sheet,这里我们只有一个sheet,默认是sheet1

XSSFSheet sh1= wb.getSheetAt(0);//i 控制行

for(int i=0;i

for(int j=0;j<2;j++){

System.out.println(sh1.getRow(i).getCell(j).getStringCellValue());

}

}

}catch(Exception e){

System.out.println(e.getMessage());

}

}

}

7. 写入内容到excel

例如,我们需要在上面test-data.xlsx文件第三列标上Fail或者Pass,请看下面脚本如何实现。

packagelessons;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;public classReadExcel {public static voidmain(String[] args) {try{//指定excel的路径

File src = new File(".\\Files\\test-data.xlsx");//加载文件

FileInputStream fis = newFileInputStream(src);//加载workbook

@SuppressWarnings("resource")

XSSFWorkbook wb=newXSSFWorkbook(fis);//加载sheet,这里我们只有一个sheet,默认是sheet1

XSSFSheet sh1= wb.getSheetAt(0);//写入excel数据

sh1.getRow(0).createCell(2).setCellValue("Pass");

sh1.getRow(1).createCell(2).setCellValue("Fail");

sh1.getRow(2).createCell(2).setCellValue("N/A");

sh1.getRow(3).createCell(2).setCellValue("Pass");//保存文件

FileOutputStream fout=new FileOutputStream(new File(".\\Files\\test-data.xlsx"));//覆盖写入内容

wb.write(fout);//关闭文件

fout.close();

}catch(Exception e){

System.out.println(e.getMessage());

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值