众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 Sheet 页中的数据。敬请各位小主参阅,若有不足之处,敬请大神指正,不胜感激!

不多言,小二上码咯。。。

通过 sheet_index 读取 EXCEL 数据源代码如下所示,敬请参阅!

     /**
* @function 文件读取: EXCEL文件
* @description 通过EXCEL文件sheet的索引index读取
*
* @author Aaron.ffp
* @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java excelRead, 2014-11-25 16:11:03 Exp $
*
* @param filename : EXCEL文件路径
* @param sheetIndex : EXCEL文件sheet索引
*
* @return ArrayList<String[]> --> EXCEL文件内容的二维数组
*/
public ArrayList<String[]> excelRead(String filename, int sheetIndex){
/* Excel 数据 */
ArrayList<String[]> excelData = new ArrayList<String[]>(); Workbook workbook = null; // 工作薄
Cell cell = null; // 单元格 /* 参数校验: 为null或空字符串时, 抛出参数非法异常 */
if (filename == null || "".equals(filename) || !assertFileType(filename, "EXCEL")) {
throw new IllegalArgumentException();
} try{
/* 创建输入流 */
FileInputStream fis = new FileInputStream(filename); /* 获取 Excel 文件对象 */
workbook = Workbook.getWorkbook(fis); /* 获取 Excel 文件的第一个工作表 */
Sheet sheet = workbook.getSheet(sheetIndex); /* Excel 文件行数 */
for (int i = 0; i < sheet.getRows(); i++) {
/* 声明数组存储行数据 */
String[] rowData = new String[sheet.getColumns()]; /* Excel文件列数 */
for (int j = 0; j < sheet.getColumns(); j++) {
/* 获取单元格 cell[i][j] */
cell = sheet.getCell(j, i); rowData[j] = cell.getContents().toString().trim();
} // 若当前行均为null或者空, 则退出循环, 返回非空行数据
if (this.stringutil.assertStringListIsNull(rowData)) {
return excelData;
} /* 将获取的行数据存到 excelData */
excelData.add(rowData);
}
} catch (FileNotFoundException fnfe){
this.message = "文件 {" + filename + "} 不存在!";
this.logger.error(this.message, fnfe); return null;
} catch (BiffException be){
this.message = "文件 {" + filename + "} 读取失败!";
this.logger.error(this.message, be); return null;
} catch (IOException ioe){
this.message = "文件 {" + filename + "} 读取失败!";
this.logger.error(this.message, ioe); return null;
} return excelData;
}

通过索引读取 excel 文件对应 sheet 页的数据

对应的测试源码如下所示:

     /**
* Test : get data from excel by sheet index
*
* @author Aaron.ffp
* @version V1.0.0: autoUISelenium test.java.aaron.java.tools FileUtilsTest.java test_excelRead_by_index, 2014-11-25 16:19:13 Exp $
*
*/
@Test
public void test_excelRead_by_index(){
this.message = "\n\n\nTEST:FileUtils.csvWrite(String filename, char delimiter, String encoding, ArrayList<String[]> csvdata)";
this.logger.debug(this.message); this.fu = new FileUtils();
String filename = this.constantslist.PROJECTHOME + this.constantslist.FILESEPARATOR +
"testng-temp" + this.constantslist.FILESEPARATOR + "excelRead.xls"; ArrayList<String[]> exceldata = this.fu.excelRead(filename, 0); Assert.assertEquals(exceldata.get(5)[2], "5 = 2", "Test case failed.");
}

索引读取测试源码

通过 sheet_name 读取 EXCEL 数据源代码如下所示,敬请参阅!

     /**
* @function 文件读取: EXCEL文件(通过EXCEL的sheet名称)
*
* @author Aaron.ffp
* @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java excelReadByName, 2014-11-25 16:08:19 Exp $
*
* @param filename : EXCEL文件路径
* @param sheetname : EXCEL文件sheet名称
* @param ignorerows : 忽略的初始行数
*
* @return ArrayList<String[]> --> EXCEL文件内容的二维数组
*/
public ArrayList<String[]> excelReadByName(String filename, String sheetname, int ignorerows){
/* Excel 数据 */
ArrayList<String[]> excelData = new ArrayList<String[]>(); Workbook workbook = null; // 工作薄
Cell cell = null; // 单元格 /* 参数校验: 为null或空字符串时, 抛出参数非法异常 */
if (filename == null || "".equals(filename) || !this.assertFileType(filename, "EXCEL")) {
throw new IllegalArgumentException();
} try{
/* 创建输入流 */
FileInputStream fis = new FileInputStream(filename); /* 获取 Excel 文件对象 */
workbook = Workbook.getWorkbook(fis); /* 获取 Excel 文件的第一个工作表 */
Sheet sheet = workbook.getSheet(sheetname); /* Excel 文件遍历 */
for (int i = 0; i < sheet.getRows(); i++) { // Excel 文件行数
if (i < ignorerows) {
this.message = "忽略参数文件的初始行数为:" + ignorerows;
this.logger.info(this.message); continue;
} /* 声明数组存储行数据 */
String[] rowData = new String[sheet.getColumns()]; for (int j = 0; j < sheet.getColumns(); j++) { // Excel 文件列数
/* 获取单元格 cell[col][row] */
cell = sheet.getCell(j, i); rowData[j] = cell.getContents().toString().trim();
} // 若当前行均为null或者空, 则退出循环, 返回非空行数据
if (this.stringutil.assertStringListIsNull(rowData)) {
return excelData;
} /* 将获取的行数据存到 excelData */
excelData.add(rowData); fis.close();
}
} catch (FileNotFoundException fnfe){
this.message = "文件 {" + filename + "} 不存在!";
this.logger.error(this.message, fnfe); return null;
} catch (BiffException be){
this.message = "文件 {" + filename + "} 读取失败!";
this.logger.error(this.message, be); return null;
} catch (IOException ioe){
this.message = "文件 {" + filename + "} 读取失败!";
this.logger.error(this.message, ioe); return null;
} catch (NullPointerException npe){
this.message = "文件 { " + filename + " } 不存在 Sheet 页面{ " + sheetname + " }";
this.logger.error(this.message, npe); return null;
} return excelData;
}

通过名称读取 excel 文件对应 sheet 页的数据

对应的测试源码如下所示:

     /**
* Test : get data from excel by sheet name
*
* @author Aaron.ffp
* @version V1.0.0: autoUISelenium test.java.aaron.java.tools FileUtilsTest.java test_excelRead_by_sheetname, 2014-11-25 16:20:03 Exp $
*
*/
@Test
public void test_excelRead_by_sheetname(){
this.message = "\n\n\nTEST:FileUtils.csvWrite(String filename, char delimiter, String encoding, ArrayList<String[]> csvdata)";
this.logger.debug(this.message); this.fu = new FileUtils();
String filename = this.constantslist.PROJECTHOME + this.constantslist.FILESEPARATOR +
"testng-temp" + this.constantslist.FILESEPARATOR + "excelRead.xls"; ArrayList<String[]> exceldata = this.fu.excelReadByName(filename, "Sheet2", 0); if (exceldata != null) {
Assert.assertEquals(exceldata.get(9)[5], "9 = sheet 5", "Test case failed.");
} else {
this.message = "文件 { " + filename + " } 读取失败";
Assert.fail(this.message);
}
}

名称读取测试源码

至此, Java学习-017-EXCEL 文件读取实例源代码 顺利完结,希望此文能够给初学 Java 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

Java学习-017-EXCEL 文件读取实例源代码的更多相关文章

  1. Java学习-013-文本文件读取实例源代码(两种数据返回格式)

    此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 1.读取的文本文件内容以一维数组[LinkedList<String>]的形式返回,源代 ...

  2. Java学习-014-文本文件写入实例源代码(两种写入方式)

    此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 第一种:文本文件写入,若文件存在则删除原文件,并重新创建文件.源代码如下所示: /** * @fun ...

  3. Java学习-019-Properties 文件读取实例源代码

    在这几天的学习过程中,有开发的朋友告知我,每个编程语言基本都有相应的配置文件支持类,像 Python 编程语言中支持的 ini 文件及其对应的配置文件读取类 ConfigParse,通过这个类,用户可 ...

  4. Java学习-016-CSV 文件读取实例源代码

    上文(CSV文件写入)讲述了日常自动化测试过程中将测试数据写入 CSV 文件的源码,此文主要讲述如何从 CSV 文件获取测试过程中所需的参数化数据.敬请各位小主参阅,若有不足之处,敬请大神指正,不胜感 ...

  5. Java学习-018-EXCEL 文件写入实例源代码

    众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 S ...

  6. Java学习-015-CSV 文件写入实例源代码

    在日常的自动化测试脚本编写的过程中,有时要将获取的测试结果或者测试数据存放在数据文件中,以用作后续的参数化测试.常用的文件文件类型无非 txt.csv.xls.properties.xml 这五种文件 ...

  7. Java学习-011-创建文件实例及源代码

    此文源码主要为应用 Java 创建文件的源代码.若有不足之处,敬请大神指正,不胜感激! 创建文件的源代码如下所示: /** * @function 文件操作:创建文件.若文件不存在,则直接创建文件:若 ...

  8. Java学习-010-创建文件夹源代码

    此文源码主要为应用 Java 创建文件目录的源码.若有不足之处,敬请大神指正,不胜感激! 创建文件夹源代码如下所示: /** * @function 文件操作:创建文件夹.若文件夹不存在,则级联创建文 ...

  9. php读取excel文件的实例代码

    php读取excel文件的实例代码. 代码: <?php /** * php读取excel文件 * by www.jbxue.com */ $this->loadexcel();//半酣p ...

随机推荐

  1. TYVJ 1011 NOIP 2008&&NOIP 2000 传纸条&&方格取数 Label:多线程dp

    做题记录:2016-08-15 15:47:07 背景 NOIP2008复赛提高组第三题 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...

  2. POJ 1095 Trees Made to Order(卡特兰数列)

    题目链接 中间计算的各种细节.有的细节没处理好,就wa了...主要思路就是根据卡特兰数列的: h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n&g ...

  3. Write cv::Mat to a file

    如果我们想把OpenCV中的矩阵数据类型cv::Mat保存在一个文件中,可以使用如下的代码: void writeMatToFile(cv::Mat& m, const char* filen ...

  4. Pointcut is not well-formed: expecting 'identifier' at character position 0

    异常如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDa ...

  5. Solr学习笔记之3、Solr dataimport - 从SQLServer导入数据建立索引

    Solr学习笔记之3.Solr导入SQLServer数据建立索引 一.下载MSSQLServer的JDBC驱动 下载:Microsoft JDBC Driver 4.0 for SQL Server ...

  6. 利用poi开源jar包操作Excel时删除行内容与直接删除行的区别

    一般情况下,删除行时会面临两种情况:删除行内容但保留行位置.整行删除(删除后下方单元格上移).对应的删除方法分别是: void removeRow(Row row)//Remove a row fro ...

  7. Archlinux 简明安装指南

    archlinux是在distrowatch里位于top 10的发行版中,唯一采用roll release的distribution. pacman和yaourt双剑合壁,使得在archlinux安装 ...

  8. linux下创建和删除软、硬链接

    linux下创建和删除软.硬链接 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制 ...

  9. Java语言基础相关问题

    *动手动脑: 问题1:   仔细阅读示例: EnumTest.java,运行它,分析运行结果? 源代码: public class EnumTest { public static void main ...

  10. 学习VS生活

    很多时候,失败的原因归结为一点:我没有时间...代码敲不完,我真的是没有时间么?很多时候是没意识的浪费时间 我每次进教室,总能看到吴刚和赵东亮在敲代码,为啥他们有时间呢?很多时候,时间就像那啥,挤一挤 ...