Значение ячейки, полученное с помощью Apache POI из таблицы Excel, печатает то же значение, что и Java String, но оператор IF не говорит, что они совпадают? - PullRequest
0 голосов
/ 23 февраля 2020

Я читаю ячейки из таблицы Excel. Я читаю первую ячейку в каждой строке и сравниваю их с объектом String, который я передал в функцию. Функция корректно перебирает все строки и обращается к первой ячейке в каждой строке, но при сравнении их с параметром объекта String оператор IF не выполняется, несмотря на то, что значение, полученное из ячейки, и параметр String выдают одно и то же. Я использовал операторы '==', а также .equals (), но, кажется, ничто не позволяет выполнить оператор IF.

public static ArrayList<Integer> returnCurrency(String currency, String fileName) throws IOException
{

FileInputStream excelFile = new FileInputStream(newFile(fileName));

Workbook workbook = new XSSFWorkbook(excelFile);

Sheet sheet = workbook.getSheetAt(0);

Iterator<Row> iterator = sheet.iterator();

ArrayList<Double> currencyRateArray = new ArrayList<Double>();

for( int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++)
{
    Row row = sheet.getRow(rowNum);
    Cell tempCell = row.getCell(0);

System.out.printf("temp cell has value of:%s\n",tempCell.getStringCellValue());

System.out.printf("currency variable is: %s\n", currency);
if(currency.equals(tempCellString))
{
    System.out.println("Found the currency\n");
}
}
}

Когда я передаю параметр String как «USD», обе инструкции печати печатают «USD», но никогда не будут печатать «Найдено валюту», поскольку эта инструкция IF не выполняется. Любая помощь будет оценена:)

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Нашел ответ - ячейка в базе данных имела значение «USD» вместо «USD».

0 голосов
/ 24 февраля 2020

Не удалось увидеть, где вы определяете переменную tempCellString.

Давайте попробуем изменить

if(currency.equals(tempCellString))

на

if(currency.equals(tempCell.getStringCellValue()))
...