Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过excel行的Java迭代器_Java_Excel_Apache - Fatal编程技术网

通过excel行的Java迭代器

通过excel行的Java迭代器,java,excel,apache,Java,Excel,Apache,我正在检查每个excel行并寻找特定的值。在我找到该值后,它应该打印关于该行位置的输出。但如果该值不正确或未找到,我将打印“未找到匹配项”。所以每次我这样做时,我的输出总是:Match not found p.S.barcode是我从另一个类解析的字符串值(我调试过,它的值传递正确) 此外,若我只写if,而不写else,若程序能找到那个值,但若值不正确,我将一无所获 我的问题是,每次我运行那个if循环时,不管我的条形码字符串是否正确,我总是找不到匹配项 我的任务是扫描excel文件,找到一个我在

我正在检查每个excel行并寻找特定的值。在我找到该值后,它应该打印关于该行位置的输出。但如果该值不正确或未找到,我将打印“未找到匹配项”。所以每次我这样做时,我的输出总是:Match not found

p.S.barcode是我从另一个类解析的字符串值(我调试过,它的值传递正确)

此外,若我只写if,而不写else,若程序能找到那个值,但若值不正确,我将一无所获

我的问题是,每次我运行那个if循环时,不管我的条形码字符串是否正确,我总是找不到匹配项

我的任务是扫描excel文件,找到一个我在本例中需要的值条形码并打印整行,但如果条形码不正确,我需要打印匹配未找到,用户将能够知道他输入的条形码不正确

try {
        FileInputStream file = new FileInputStream(new File("Turto sarašas 2016.09.30.xlsx"));

        //Create Workbook instance holding reference to .xlsx file
        XSSFWorkbook workbook = new XSSFWorkbook(file);

        //Get first/desired sheet from the workbook
        XSSFSheet sheet = workbook.getSheetAt(0);

        //Iterate through each rows one by one
        Iterator<Row> rowIterator = sheet.iterator();

        while (rowIterator.hasNext()) {
            Row row = rowIterator.next();
            //For each row, iterate through all the columns
            Iterator<Cell> cellIterator = row.cellIterator();

            while (cellIterator.hasNext()) {

                Cell cell = cellIterator.next();
                //Check the cell type and format accordingly
                final DataFormatter df = new DataFormatter();
                String valueAsString = df.formatCellValue(cell);
                if (valueAsString.equals(barcode)) {
                    System.out.print("Hello" + row.getCell(0));
                    System.out.print("Hello" + row.getCell(3));
                } else if (!valueAsString.equals(barcode)) {
                    System.out.println(" Match not found");
                }
            }
        }

        file.close();
    } catch (IOException e) {
    }
试试看{
FileInputStream文件=新的FileInputStream(新文件(“Turto sarašas 2016.09.30.xlsx”);
//创建包含对.xlsx文件引用的工作簿实例
XSSF工作簿=新XSSF工作簿(文件);
//从工作簿中获取第一张/所需的工作表
XSSFSheet sheet=workbook.getSheetAt(0);
//逐个遍历每一行
迭代器rowIterator=sheet.Iterator();
while(roweiterator.hasNext()){
行=行迭代器。下一步();
//对于每一行,遍历所有列
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext()){
Cell=cellIterator.next();
//检查相应的单元格类型和格式
final DataFormatter df=新的DataFormatter();
字符串值String=df.formatCellValue(单元格);
如果(值字符串等于(条形码)){
System.out.print(“Hello”+row.getCell(0));
System.out.print(“Hello”+row.getCell(3));
}如果(!valueAsString.equals(条形码))为else{
System.out.println(“未找到匹配项”);
}
}
}
file.close();
}捕获(IOE异常){
}

代码按预期工作。如果可能,共享输入xlsx以进行调试。

1。永远不要跳过异常,因为如果抛出异常,您可以更快地获得问题的解决方案。我不在您使用的库中,但该值可以为null吗?可能该值为null,您尝试检查null字符串的值是否为所需的值。在比较字符串之前,可以为值添加空检查。值不为空。值只是excel中未列出的另一个字符串。不知道问题出在哪里,您应该检查您从excel中得到了什么(字符串
等于什么),但您的
否则如果
没有意义,它应该是
否则
。在空catch语句中添加一个简单的
e.printStackTrace()
。可能会放一个计数器,而不是“未找到匹配项”打印输出。然后在
file.close()之后打印计数器的值。计数器的值是否与Excel文件中的单元格数匹配?我的输入是8k行:未找到匹配项。就是这样,没有错误或类似的错误。我甚至搜索了所有行的ACC,看不出我的程序是否找到了我要找的1。在if语句中包含以下代码,最好注释掉或删除else if语句。System.out.println(cell.getAddress().getRow()+“/”+cell.getAddress().getColumn());getAddress代表什么?它是返回当前正在处理的行和列位置的方法。但首先需要创建Address对象,然后可以从该对象调用getColumn和getRow,否则就不会发生这种情况。此外,若我删除了else语句,我将如何告诉用户他输入的条形码未找到匹配项?