Как перенести JXLS с версии 1 на 2
JXLS 2 не имеет обратной совместимости с версией 1. Инструкций по обновлению не существует, и, хотя я могу работать со второй версией, у меня есть две проблемы.
Версия 1 не требовала использования тегов комментариев, но теперь я не могу получить выходные данные без них.
В коде Java должно быть указано, в какое расположение листа для записи результатов, в версии 1 вывод был записан поверх шаблона, что не требовало дублирования настроек шаблона в коде Excel и Java.
Если я не могу найти решение этих двух проблем, мне придется изменить каждый шаблон, чтобы использовать комментарии. Но что еще хуже, мне также нужно, чтобы мой Java-код знал о макете рабочего листа шаблона. Я не понимаю, почему это поведение по умолчанию. Есть ли способ заставить версию 2 вести себя как версия 1?
1 ответ
Версия 1 не требовала использования тегов комментариев, но теперь я не могу получить выходные данные без них.
Это не совсем верно. Вы можете не использовать XlsCommentAreaBuilder. В этом случае у вас есть 3 варианта
Используйте XmlAreaBuilder (вероятно, не так, как вы хотите)
Используйте Java API для создания команд (возможно, не так, как вы хотите)
Создайте свой собственный Jxls1TagCommandAreaBuilder, который будет собирать команды из нотации тега Jxls-1 (и передавать ее обратно в ядро jxls)
Вариант 3, вероятно, является наилучшим, потому что вы сможете использовать шаблоны Jxls-1 с Jxls-2 без изменений. Конечно, это не тривиально, но должно быть возможно.
В коде Java должно быть указано, в какое расположение листа для записи результатов, в версии 1 вывод был записан поверх шаблона, что не требовало дублирования настроек шаблона в коде Excel и Java.
Чтобы получить поведение Jxls-1 здесь, вы можете просто сделать что-то вроде этого
for (Area xlsArea : xlsAreaList) {
xlsArea.applyAt(
new CellRef(xlsArea.getStartCellRef().getCellName()), context);
}
Таким образом, вы просто применяете область в начальной ячейке.
Если вы хотите, чтобы это было поведение по умолчанию, вы можете улучшить отслеживание проблем jxls.