Why I cannot get values from excel into a list using my codes?

谁都会走 提交于 2019-12-13 03:27:00

问题


I would like to gather the relevant Excel cells into a list for a sequence comparison. However, I failed to get those cell values with conditions into the list by using below codes (nothing is printed in console as expected).

I tried using startsWith and other condition syntax but I am not sure if this is the issue or I did sth wrong in prior.

    HSSFSheet dispcolsheet = workbook2.getSheet(0);
    Iterator<Row> colRowItr = dispcolsheet.rowIterator();
    List<String> colstatuslist = new ArrayList<String>();
    while (colRowItr.hasNext()){
        Row row = colRowItr.next();
        Cell colname = row.getCell(0);
        if ("ABC_".contains(colname.getStringCellValue())) {
            colstatuslist.add(row.getCell(1).getStringCellValue());
            System.out.println(colstatuslist);
        }
    }

My xls file looks like:

name   |status
ABC_1  | TRUE
ABC_2  | FALSE
ABC_3  | TRUE
.
.
.

I expect to store the TRUE FALSE TRUE from column B in sequence so that I could get() them to use for comparison, like get(0) would be the status of ABC_1 as TRUE, get(1) would be the status of ABC_2 as FALSE and so on.

Thank you.


回答1:


You are doing the if check the wrong direction/way.

With

"ABC_".contains(colname.getStringCellValue())

You are checking if the string ABC_ contains (or has) the cell value.

Does ABC_ contain ABC_1 - No

You should reverse it as

colname.getStringCellValue().contains("ABC_") 

or 
colname.getStringCellValue().startsWith("ABC_")

Does ABC_1 contain/startsWith ABC_ - Yes




回答2:


I find it best to use StringUtils for String comparisons. You can do,

StringUtils.contains(colname.getStringCellValue(), "ABC_") 
StringUtils.containsIgnoreCase(colname.getStringCellValue(), "ABC_") 

Very simple.



来源:https://stackoverflow.com/questions/57601856/why-i-cannot-get-values-from-excel-into-a-list-using-my-codes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!