《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)

1.简介

  前面介绍了POI可以操作excel,也简单的提到另一个操作excle的工具,本篇介绍一个其他的可以操作excel的工具,但是这个工具有一个前提,excel文件版本只能是97-2003版本,如果是2007或者以上版本是操作不了的,所以,还是建议掌握POI操作excel文件。不管这个Jexcel只能操作2003版本的excel,我们先来看看如何读取一个2003版本excel内的数据。

2.常见读写Excel的工具类开源javaAPI

目前常见读写Excel的工具类开源javaAPI有两种方式:

一个是JXL(Java Excel API) 官网地址:http://jexcelapi.sourceforge.net/

一个是Apache的POI(Poor Obfuscation Implementation)官网地址:http://poi.apache.org/

POI支持微软的OLE2格式文件Office 2003及以下版本;同时支持微软的OOXML(Office Open XML)标准,也就是Office 2007以上版本。JXL只能实现对Excel 2003以下版本的支持。

POI使用HSSF对象操作OLE2格式Excel,文件后缀为.xls的;使用XSSF、SXSSF对象操作OOXML格式Excel,文件后缀为.xlsx的。

对于OLE2版本的Excel,一个Sheet工作表它的行最多支持到65536行,列支持到256列;

对于OOXML版本的Excel,一个Sheet工作表它的行支持到1048576行,列支持到16384列。

3.JXL(Java Excel API)

3.1下载JXL

1.打开网站http://www.java2s.com/Code/Jar/j/Downloadjxl2612jar.htm,选择下面2.6.12版本下载。如下图所示:

《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)_第1张图片

2.点击“jxl/jxl-2.6.12.jar.zip( 672 k)”,开始下载,如下图所示:

《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)_第2张图片

3.下载完后解压,文件结构如下图所示:

《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)_第3张图片

4.项目实战

4.1jar文件添加

1.把JXL文件添加在你Selenium当前项目的library中,具体添加方法,宏哥在这里就不赘述了,不清楚的可以看一下上一篇文章是怎么添加的。

4.2准备Excle文件

1. 准备一个2003版本的excel文件:test-data.xls:桌面新建一个test-data.xlsx,然后输入如下内容,如下图所示:

《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)_第4张图片

2.把这个文件放到eclipse项目中,如下图所示:

《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)_第5张图片

4.3代码设计

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

《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)_第6张图片

4.4参考代码

package lessons;

import java.io.File;
import java.io.IOException;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

/**
 * @author 北京-宏哥
 * 
 * @公众号:北京宏哥
 * 
 * 《手把手教你》系列技巧篇(六十六)-java+ selenium自动化测试 - 读写excel文件 -下篇(详细教程) 
 *
 * 2022年2月12日
 */

public class OperateExcle {
    
    public static void main(String[] args) {
        
        //File src = new File(".\\Files\\test-data1.xls");
         
        try {
            //从指定位置的文件创建工作簿对象;根据计算机上的位置更改文件的路径。            
            Workbook wrk1 = Workbook.getWorkbook(new File(".\\Files\\test-data1.xlsx"));

            //获取工作簿中第一个工作表的引用
            Sheet sheet1 = wrk1.getSheet(0);

            //使用工作表的getCel(int col, int row)方法获取对单元的引用
            Cell colArow1 = sheet1.getCell(0, 0);
            Cell colBrow1 = sheet1.getCell(1, 0);
            Cell colArow2 = sheet1.getCell(0, 1);

            //使用单元格引用的getContents()方法获取单元格的内容,返回值为一个字符串
            String str_colArow1 = colArow1.getContents();
            String str_colBrow1 = colBrow1.getContents();
            String str_colArow2 = colArow2.getContents();

            // 显示单元格内容
            System.out.println("Contents of cell Col A Row 1: \"" + str_colArow1 + "\"");
            System.out.println("Contents of cell Col B Row 1: \"" + str_colBrow1 + "\"");
            System.out.println("Contents of cell Col A Row 2: \"" + str_colArow2 + "\"");

        } catch (BiffException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
    }

}

1)下面一行创建封装Excel文件的Workbook对象。 本例中,getWorkbook()方法接受指向位于“.\\Files\\test-data1.xls”处的Excel文件的File对象。

Workbook wrk1 = Workbook.getWorkbook(new File(".\\Files\\test-data1.xls"));

2)下面的行用于获取Excel文件中第一个工作表。 以类似方式,如果您正在处理的Excel文件有多个工作表,则可以获取任何其他工作表。

Sheet sheet1 = wrk1.getSheet(0);

3)下面的代码根据传递给getCell方法的参数为我们提供了对工作表中特定单元格的引用。 第一个参数表示列,第二个参数表示行。 确保只访问非空单元格,否则此方法将抛出ArrayIndexOutOfBoundsException。

Cell colArow1 = sheet1.getCell(0, 0);

4)下面这行调用getContents()方法提取Cell的内容。 内容以字符串形式返回。

String str_colArow1 = colArow1.getContents();

4.5运行代码

1.运行代码,右键Run AS->Java Appliance,控制台输出,如下图所示:

《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)_第7张图片

5.小结

1.读入Excel报jxl.read.biff.BiffException: Unable to recognize OLE stream,如下图所示:

《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)_第8张图片

解决办法:

说明导入的excel不是jxl认定的标准的OLE file,可是打开的看起来是Excle,然后我把这个Excel重新另存为一个Excel,发现他默认的保存类型是“单个文件网页”(通过EditPlus打开Excle可以看到是网页文件),然后把他保类型修改为Microsoft Office Excel,保存导入,就可以正确导入了。

另外一个可能的原因是:excel的版本问题,另存为的时候,我们要选择2003,如下图所示:

《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)_第9张图片

你可能感兴趣的:(《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程))