当前位置: 首页 > 知识库问答 >
问题:

JavaPOI中excel单元格的行验证

洪鹏海
2023-03-14

我试图在我的测试自动化框架中实现一个数据驱动的方面。我已经创建了一个fe函数,它似乎工作正常,可以检索参数的列/行数,从特定单元格获取数据,更新特定单元格等等。

我现在正在用一个基本上有2列的脚本进行测试。第一列是用户名,第二列是密码。我可以遍历这些行,列没有问题。

我遇到了一个问题,如果有一个空白单元格,它会崩溃,但我通过一些错误处理解决了这个问题,如果有一个黑色单元格,它会返回字符串“空单元格”。

我有一个小问题,即如果一些测试数据不一致:

我不知道如何处理这样的问题。如果两个单元格都为空,我添加了一些验证(它跳过该行)。我如何让它完全跳过这些类型的行,只获取包含2个单元格条目的数据?

我的代码如下:

int endMarker = edc.getExcelParameterRow(edc, 0, nextColumnMarker);

    System.out.println(endMarker);

    int columnParam = edc.getExcelParameterCol(edc, 0, ExcelDataUserName);
    System.out.println(columnParam);

    open_chrome_browser();
    Logout lo = new Logout();



    //get all of the usernames
    for (i = 0; i <endMarker-1;i++){
        String param1_celldata = edc.getExcelData(0, i+1, columnParam);
        String param2_celldata = edc.getExcelData(0, i+1, columnParam+1);

        //iterate over the username passwords of the data.xls sheet to login and out as different users

        if(param1_celldata.contains("Empty cell")&&param2_celldata.contains("Empty cell")){
            i++;
        }


        LoginPage.login(driver, edc.getExcelData(0, i+1, columnParam), edc.getExcelData(0, i+1, columnParam+1));
        lo.logout_user_out(driver);

我不能做以下事情:

if(param1_celldata.contains("Empty cell")&&param2_celldata.contains("Empty cell")){
            i++;
        }
        if(param1_celldata.contains("Empty cell")){
            i++;
        }
        if(param2_celldata.contains("Empty cell")){
            i++;
        } 

以下也不符合要求:

if(param1_celldata.contains("Empty cell")&&param2_celldata.contains("Empty cell")){
            i++;
        }
        if(param1_celldata.contains("Empty cell")||param2_celldata.contains("Empty cell")){
            i++;
        }           

我只想让这个工具完全跳过这些奇怪的错位细胞。我如何做到这一点?

共有1个答案

罗浩然
2023-03-14

你能稍微改变一下逻辑,试试下面的方法吗?这将跳过任一单元格为空的行。

for (i = 0; i < endMarker - 1; i++)
{
    String param1_celldata = edc.getExcelData(0, i + 1, columnParam);
    String param2_celldata = edc.getExcelData(0, i + 1, columnParam + 1);

    // iterate over the username passwords of the data.xls sheet to login and out as different users
    if (!param1_celldata.contains("Empty cell") && !param2_celldata.contains("Empty cell"))
    {
        LoginPage.login(driver, param1_celldata, param2_celldata);
        lo.logout_user_out(driver);
    }
}
 类似资料:
  • 问题内容: 我正在尝试将多行文本写入Excel单元格。 但是,当我打开文档时,我只看到一行,直到我双击它进行编辑,然后它变成了两行。为什么会这样呢?谢谢 问题答案: 您需要设置行高以容纳两行文本。 您需要设置以获取新行。试试这个:这是wb 。

  • 问题内容: 我正在处理生成Excel文件的JasperReport报告。由于某种原因,我的单元格格式/类型不应该如此。例如,我的单元格中有Date对象,但是当我生成Excel文件时,它将单元格类型设置为Number,或者Long类型是单元格中的文本,但是单元格的格式是number,并且当用户编辑日期单元格时(例如,日期为11/02) / 2012更改为11/03/2012),它将日期转换为数字(4

  • 我试图根据任意单元格的值,获取从E到BH的特定范围内的整行数据。例如,如果单元格P,3上的值为“红色”,则我希望选择从E3到BH,3的整个范围。 此外,如果F9中的单元格上有值“黄色”,我希望选择从E9到BH9的整行 到目前为止,我一直在尝试从字符串“my text”中获取行,但它不起作用。我计划以与类似的方式获取行和列,以便根据文本获取从e(行)到bh(行)的行

  • 第4行;6.8相同,但订单栏(在6和8上添加一个字母)和生产栏(不同的生产数量)除外。合并第4、6、8行并汇总生产数量。第6、8行被隐藏或删除。

  • null 如您所料,A3将导致。现在将A2的格式更改为会计,使用小数点后2位。A2现在读,但是基础值仍然是,所以A3仍然是。 VBA 制作一个新模块并添加以下函数: null 和具有相同的基础值,但和没有,尽管它们都是使用和的方法计算的。 ()中的表达式正在访问和的实际基础值。如何在VBA中访问这些值?