Я использую библиотеку Jxls на основе POI для создания электронных таблиц, содержащих макросы, которые ссылаются на другие рабочие листы. У меня проблема, когда формула ссылается на пустую переменную и показывает "#ЗНАЧ" вместо просто пробела.
Например, «исходный» рабочий лист (назовем его worksheetA) правильно заполняется с использованием переменных Jxls. Например, я поместил это на рабочий лист A, ячейку A2.
${employee.salary}
Вышеупомянутое относится к коллекции, поэтому, если есть 10 сотрудников, в сгенерированном рабочем листе A появится 10 строк. Обратите внимание, что размер коллекции неизвестен с точки зрения шаблона, но я могу получить его с помощью класса java, который при необходимости генерирует электронную таблицу.
На другом листе (назовем его worksheetB) я заполняю ячейки на основе содержимого листа A.
Например, на листе B я заполню, скажем, 20 строк столбца A следующей формулой:
$[worksheetA!A2]
Первые 10 строк рабочей таблицы B вычисляются правильно. Но в оставшихся 10 строках отображается «#ЗНАЧ», так как соответствующего сотрудника нет (т. е. всего 10 сотрудников).
Это своего рода искаженное объяснение, но в основном формула, относящаяся к ячейке за пределами тех, которые были заполнены коллекцией Jxls, возвращает «#ЗНАЧ», и я хотел бы избавиться от нее.