2013-07-25 5 views
0

Я должен проверить строки из двух файлов xlsx, если они равны, должен вернуть имя, но он всегда возвращает значение null, кто-то может мне помочь?Java excel - Сравнение двух строк

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? 'Row'? 'Cell'? 'Tmp'? 'JobName'? или вы говорите: 'tmp.equals (jobName)' всегда false? Вы пытались вывести значения, чтобы увидеть какие-либо расхождения? Каковы значения 'tmp' и' jobName'? – BLaZuRE

+0

Если условие IF не выполнено, вы всегда получите нуль. просто отлаживайте его или попробуйте с 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

ОК теперь работаю спасибо! –