前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)

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

作者头像
北京-宏哥
发布2022-03-09 10:41:30
8510
发布2022-03-09 10:41:30
举报

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版本下载。如下图所示:

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

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

4.项目实战

4.1jar文件添加

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

4.2准备Excle文件

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

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

4.3代码设计

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

4.4参考代码
代码语言:javascript
复制
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对象。

代码语言:javascript
复制
Workbook wrk1 = Workbook.getWorkbook(new File(".\\Files\\test-data1.xls"));

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

代码语言:javascript
复制
Sheet sheet1 = wrk1.getSheet(0);

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

代码语言:javascript
复制
Cell colArow1 = sheet1.getCell(0, 0);

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

代码语言:javascript
复制
String str_colArow1 = colArow1.getContents();
4.5运行代码

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

5.小结

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

解决办法:

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.简介
  • 2.常见读写Excel的工具类开源javaAPI
  • 3.JXL(Java Excel API)
    • 3.1下载JXL
    • 4.项目实战
      • 4.1jar文件添加
        • 4.2准备Excle文件
          • 4.3代码设计
            • 4.4参考代码
              • 4.5运行代码
              • 5.小结
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档