Jxls - с версией 2.7.2. ссылки на объединенные ячейки больше не работают с несколькими пустыми коллекциями - PullRequest
0 голосов
/ 29 января 2020

копия из: https://bitbucket.org/leonate/jxls/issues/197/jxls-with-version-272-jointed-cell

Прежде всего, спасибо команде jxls за этот замечательный и экономящий время инструмент!

Однако есть некоторые потеря функциональности в jxls 2.7.2, что, к сожалению, заставило нас go вернуться к 2.6.0 (хотя я и не проверял промежуточные версии).

Мы регулярно проводим суммирования для более чем одной коллекции (более одна область). В этом случае прямая нотация Excel "= SUM (ref1; ref2; ref3)" не работает с jxls (независимо от версий), где ref * - ссылки на ячейки (на тело различных итераций / областей). В частности, в ситуациях, когда одна или все ссылки указывают на пустые коллекции. Полученные ссылки на обработанные ячейки могут быть повреждены. То же самое верно при использовании сумм Excel в форме "= SUM (ref1: ref3)" или "= ref1 + ref2 + ref3". (Используйте прикрепленный шаблон и опробуйте различные варианты).

По этой причине мы должны придерживаться формулы "$ [SUM (U_ (ref1, ref2, ref3))]", которая также предлагается для веб-сайт jxls: http://jxls.sourceforge.net/reference/formulas.html («Ссылки на объединенные ячейки»).

Эта формула хорошо работала с jxls 2.6.0, даже если все ссылки в объединенной ссылке ссылались на ячейку, которая исчезает во время обработки (итерация над пустой коллекцией). В этом случае формула была обработана до = 0 (по умолчанию). В этом особом случае jxls 2.7.2 терпит неудачу. Я предполагаю, что что-то идет не так с внутренним значением формулы по умолчанию.

Я приложил пример кода плюс шаблон, используя нотацию $ [SUM (U_ ())] и два результата из jxls 2.6.0 и 2.7. 2. Вы увидите, что jxls 2.6.0 правильно обрабатывает сумму до 0 во второй сумме, в то время как jxls 2.7.2 не обрабатывает вторую формулу $ [SUM (U_ ())].

Может кто-нибудь помочь здесь ?

Всех лучших христиан

код: https://portal.atesio.de/owncloud/index.php/s/7SiSotMMPXJ4tL5

шаблон: https://portal.atesio.de/owncloud/index.php/s/rkHKjE8wsGRPDNj

выход 2.6.0: https://portal.atesio.de/owncloud/index.php/s/yMprwr7rCWYkRWY

выход 2.7.2: https://portal.atesio.de/owncloud/index.php/s/BCJwD45kRAzTcJZ

1 Ответ

1 голос
/ 01 февраля 2020

Может быть закрыт. Дальнейшее обсуждение https://bitbucket.org/leonate/jxls/issues/197/jxls-with-version-272-jointed-cell

Попробуем исправить это для JXLS 2.8.0. Если вам нужно быстрое исправление:

Замените StandardFormulaProcessor. java и замените строку

if (isFormulaCellRefsEmpty && isFormulaJointedCellRefsEmpty && !formulaCellData.isParameterizedFormulaCell()) {

на

if (isFormulaCellRefsEmpty && isFormulaJointedCellRefsEmpty) {
...