2015-01-16 2 views
0

Im пытается получить определенное значение из каждого листа в excel. Код отлично работает для тестовой книги excel, но не работает с файлом excel im, пытающимся извлечь.Получение значений из Excel Apache POI

Ошибка встречается в том,

"Exception in thread "AWT-EventQueue-0" org.apache.poi.ss.formula.FormulaParseException: Specified named range 'Table156723451819202122232434567891011121314151619216710111213162024254567101718193456781112131623242528234789101314151619202128910111215234567891011121314161718192021222324252627282930312345678910111213141516171819202122232425262728293032234567891011140' does not exist in the current workbook." 

Мишень первенствовать книга имеет только 1 месяц листов (1jan, 2jan ...) И им-клетка таргетингом выглядит следующим образом:.

enter image description here

формула клетки мишени следующим образом: = СУММ (D23: D24)

Ниже приведены мои коды:

for(int i=0; i<=30; i++){ 
      Sheet sheet = wb.getSheetAt(i); 
      FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); 
      CellReference cellReference = new CellReference("D25"); 
      //CellReference cellReference = new CellReference("A4"); 
      Row row = sheet.getRow(cellReference.getRow()); 
      Cell cell = row.getCell(cellReference.getCol()); 

      //System.out.println("i:"+row.getCell(cellReference.getCol())); 
      //CellValue cellValue = evaluator.evaluate(cell); 
      CellValue cellValue = evaluator.evaluate(cell); 

      switch (cellValue.getCellType()) { 
       case Cell.CELL_TYPE_BOOLEAN: 
        System.out.println(cellValue.getBooleanValue()); 
        break; 
       case Cell.CELL_TYPE_NUMERIC: 
        System.out.println(cellValue.getNumberValue()); 
        break; 
       case Cell.CELL_TYPE_STRING: 
        System.out.println(cellValue.getStringValue()); 
        break; 
       case Cell.CELL_TYPE_BLANK: 
        break; 
       case Cell.CELL_TYPE_ERROR: 
        break; 

       // CELL_TYPE_FORMULA will never happen 
       case Cell.CELL_TYPE_FORMULA: 
        break; 
      } 

Я попытался поместить ту же формулу в свое тестовое превосходство, которое отлично работает. Дайте какое-либо руководство для этого, поскольку я застрял в этом очень долго. Спасибо!

ответ

0

Я понял.

Использование .XLS формат вместо .XLSX решил эту проблему.

Cheers! Счастливое кодирование.

Смежные вопросы