0

El problema que tengo estoy usando un if para comparar una variable con un valor Cell(en excel) pero no me funciona el if, aunque comprobé aparte que la condición funciona ya que los valores de los objetos de la condición del if son iguales. Este es el código:

package Excel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.PushbackInputStream;
import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import En_El_Traslado.Filtro;

public class Busqueda_En {
    public Busqueda_En() {
        Filtro Filtro_=new Filtro();
        try (FileInputStream file = new FileInputStream(new File("Traslados.xlsx"))) {
            // leer archivo excel
            XSSFWorkbook worbook = new XSSFWorkbook(file);
            //obtener la hoja que se va leer
            XSSFSheet sheet = worbook.getSheetAt(0);
            //obtener todas las filas de la hoja excel
            Iterator<Row> rowIterator = sheet.iterator();

            Row row;
            // se recorre cada fila hasta el final
            while (rowIterator.hasNext()) {
                row = rowIterator.next();
                //se obtiene las celdas por fila
                Iterator<Cell> cellIterator = row.cellIterator();

                if (Filtro_.Busqueda_Celualar==row.getCell(9).getStringCellValue()) { (Este es)
                    System.out.println("Prueba");
                }
            }

        } catch (Exception e) {
            e.getMessage();
        }
    }
}
Fernando Carraro
  • 1,247
  • 9
  • 14

1 Answers1

2

El problema es por comparar con el ==. Esta comparación no compara las cadenas, sino si la instancia es la misma. Así, por ejemplo:

String cadena1 = new String("Hola");
String cadena2 = new String("Hola");
if (cadena1 == cadena2)
{
   ...
}

Es false.

Para comparar realmente las cadenas y no si son o no la misma instancia, se usa el método equals().

String cadena1 = new String("Hola");
String cadena2 = new String("Hola");
if (cadena1.equals(cadena2))
{
   ...
}

Esto daría true siempre que ambas cadenas tengan el mismo texto dentro

F. Iván
  • 1,463
  • 6
  • 23