Выпадающее значение Excel DataValidation возвращается NULL - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь получить значение ячейки из файла File.xlsm, используя Apache POI 4.0.1.

В ячейке есть проверка данных с использованием списка для раскрывающихся значений Да / Нет.

Я передаю в ячейке метод сеттера, где я вызываю другой метод для получения значения на основе типа ячейки.

public void setSomething(Cell cell){
this.var=parseCellValue(cell);
}

А в parseCellValue я получаю значение ячейки на основе типа ячейки

switch(cell.getCellType()){
case NUMERIC:.....
case STRING:......
case BLANK: return null;
}

Я пытаюсь получить выбранное раскрывающееся значение, но оно возвращает пустую ячейку, даже если выбрано значение.

Пожалуйста, сообщите, как получить это значение.

1 Ответ

5 голосов
/ 05 февраля 2020

Ваша проблема не воспроизводима для меня. Этот вопрос показывает, почему нам всегда нужен минимальный воспроизводимый пример .

Итак, давайте получим следующее:

ExcelDataValidation.xlsx выглядит так:

enter image description here

В столбце D установлена ​​проверка данных.

Тогда следующий код сможет правильно получить все значения в ячейках:

import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;

class ExcelParseCellValue {

 static void setSomething(Cell cell) {
  Object var = parseCellValue(cell);
  System.out.println(String.valueOf(var));
 }

 static Object parseCellValue(Cell cell) {
  Object var = null;
  switch (cell.getCellType()) {
   case NUMERIC:
    var = cell.getNumericCellValue();
    break;
   case STRING:
    var = cell.getStringCellValue();
    break;
   case BLANK:
    var = null;
    break;
   default:
    var = null;
  }
  return var;
 }

 public static void main(String[] args) throws Exception {

  Workbook workbook = WorkbookFactory.create(new FileInputStream("ExcelDataValidation.xlsx"));
  Sheet sheet = workbook.getSheetAt(0);

  for (Row row : sheet) {
   for (Cell cell : row) {
    setSomething(cell);
   }
  }  
  workbook.close();
 }
}

Вывод :

C:\java>c:\java\jdk-12.0.2\bin\java -cp .;.\*;poi-4.1.1\*;poi-4.1.1\lib\*;poi-4.1.1\ooxml-lib\* ExcelParseCellValue
Text
Number
Amount
Validation
Text1
1.0
1234.56
Yes
Text2
2.0
789.12
No
Text3
3.0
34567.89
Yes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...