2013-07-25 3 views
0

두 xlsx 파일의 문자열을 확인해야합니다. 이름이 같아야 만 반환되지만 항상 null을 반환합니다. 누군가 나를 도울 수 있습니까?자바 엑셀 - 두 문자열 비교

try 
    { 
     FileInputStream fisCod = new FileInputStream(pathC); 

     XSSFWorkbook wb = new XSSFWorkbook (fisCod); 
     XSSFSheet sheet = wb.getSheetAt(0); 
     int lastRow = sheet.getLastRowNum(); 

     for(int i=0; i<lastRow; i++) 
     {  
      Row row = sheet.getRow(i); 
      Cell cell = row.getCell(jobCod); 

      String tmp = cell.getRichStringCellValue().getString().toLowerCase(); 

      if (tmp.equals(jobName)) //jobName is a String 
      { 
       return tmp; 
      } 
      else 
      { 
       return null; 
      } 
     } 
     fisCod.close(); 
    } 
    catch (IOException e) 
    { 
     System.out.println(e.getMessage()); 
    } 
+2

null이란 무엇입니까? 행? '셀'? 'tmp'? 'jobName'? 또는'tmp.equals (jobName)'이 항상 false라고 말하고 있습니까? 불일치를보기 위해 값을 출력 해 보셨습니까? 'tmp'와'jobName'의 값은 무엇입니까? – BLaZuRE

+0

IF 조건이 충족되지 않으면 항상 null이됩니다. 그냥 디버깅하거나 equalsIgnoreCase와 함께 시도하십시오 – Reddy

+0

equalsIgnoreCase와 동일합니다 –

답변

1

상기 코드의 제 불일치 null 후속 행의 값을 체크하지 않고 반환되게한다. 이것이 시나리오에 대한 설명 일 것입니다.

확인 모든 셀 값 전에 시도 된 일치가 실패 할 때 null 반환에 의지.

for (int i = 0; i < lastRow; i++) { 
    Row row = sheet.getRow(i); 
    Cell cell = row.getCell(jobCod); 

    String tmp = cell.getRichStringCellValue().getString().toLowerCase(); 

    if (tmp.equals(jobName)) { 
     return tmp; 
    } 
} 

return null; // now return null 
+0

이제 작동 감사합니다! –