Как получить значение из объединенной ячейки Excel?

Как получить значение из объединенной ячейки Excel?

Требуется помощь, чтобы получить значение объединенной ячейки из «Итоговой цены». Как показано на изображении выше, это объединенная ячейка, начиная с строки с 13 по 18. Я использую приведенный ниже код, чтобы получить значение, но все равно получаю его как null.

CellRangeAddress mergedCell = new CellRangeAddress(12, 17, 9, 9);
int rowNum = mergedCell.getFirstRow();
int lastRow = mergedCell.getLastRow();
int colIndex = mergedCell.getFirstColumn();
for (int rowCounter = rowNum; rowCounter < lastRow; rowCounter++) {
            Cell cell2Update = sheet.getRow(rowCounter).getCell(colIndex);
            cell2Update.setCellType(Cell.CELL_TYPE_NUMERIC);
            CellValue c = evaluator.evaluate(cell2Update);
            if (null != c) {
                Double lisPrice= c.getNumberValue();
                if (lisPrice> 0) {
                    spreadheetResultData.setListPricetotal(df.format(lisPrice));
                }
            }
        }

Пожалуйста, помогите мне получить значение объединенной ячейки.

Как правило, для объединенных ячеек вам нужно выбрать самую верхнюю левую ячейку для реального значения.

Gagravarr 02.05.2018 11:32

Это J-столбец. Итак, обращаясь к изображению, вы имеете в виду, что значение должно быть получено из J13. Пробовал это уже, но все равно не удалось!

user3662369 02.05.2018 11:46

Вы уверены, что это одна объединенная ячейка? Судя по изображению, фактическое значение кажется слишком далеким от знака $. Возможно, фактическое значение находится в столбце K? (хотя это предположение, поскольку мы не можем видеть имена столбцов)

Zac 02.05.2018 11:49

Да, я уверен . Это единственная объединенная ячейка. от J13 до J18.

user3662369 02.05.2018 11:51
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
579
2

Ответы 2

Как упоминалось в комментарии, просто обратитесь к самой верхней левой ячейке, например, если диапазон от A2 до C4 объединен, тогда формула = A2 вернет содержимое объединенной ячейки, то же самое относится и к макросам.

Всего 1 столбец J + 6 строк с 13 по 18. Могу ли я получить код для извлечения значения из J13 ... J18? Я попытался получить J13, но все равно не смог получить значение.

user3662369 02.05.2018 11:48

Извините, какую ошибку вы получили, не уверен, что вы имеете в виду, вы не смогли получить значение, как указано в @Vityata, вы можете выбрать свою объединенную ячейку, чтобы увидеть эту возвращаемую ячейку, в другой ячейке на том же листе просто введите = J13, если это ничего не возвращает, перезапишите значение в объединенном диапазоне просто в качестве теста, чтобы увидеть, что возвращает формула.

Ricards Porins 02.05.2018 12:10
  1. Выделите объединенную область ячеек;
  2. Посмотрите в Excel, к какой ячейке он относится (красная стрелка);
  3. Обратитесь к этой ячейке;

Там написано J13, но все равно ничего не стоит. Может ли проблема быть в оценщике формул? в качестве ячейки формулы.

user3662369 02.05.2018 11:53

@ user3662369 - может быть. Попробуйте написать «Тест» вместо формулы и попробуйте. Если это сработает, это проблема формулы.

Vityata 02.05.2018 11:54

но формула проста = СУММ (D48, D63, D69, D85, D105, D114, D120, D143, D158, D164, D173, D188‌, D194, D206, D212, D266‌, D272, D287, D293, D305‌ , D323, D359, D371, D54, ‌ D91, D149, D179, D311) .... Я не вижу проблем с формулой.

user3662369 02.05.2018 11:56

@ user3662369 - да, проблем нет. Но все же неплохо было бы написать «тест» в объединенной ячейке и попытаться отобразить его. Как только вам это удастся, замените его формулой и попробуйте снова отобразить ...

Vityata 02.05.2018 12:00

Это код, который я пытался выполнить, но получил listPrice как 0,0 ................................... ......................... ‌ .................... ‌. ................... ‌ ......... Cell cell2Update = sheet.getRow (12) .getCell (9); cell2Update.setCellType (Cell.CELL_TYPE_NUMERIC); Двойной listPrice = cell2Update.getNumericCellValue ();

user3662369 02.05.2018 14:00

@ user3662369 - Попробуйте использовать контрольная работа вместо формулы. Тогда попробуйте использовать String listPrice вместо Double. Может случиться так, что десятичный разделитель в вашей системе отличается от . и не выполняет синтаксический анализ в Double.

Vityata 02.05.2018 14:07

Другие вопросы по теме