Я делаю приложение для анализа некоторых данных, и результат должен быть представлен в файлах Excel. В этом смысле я начал использовать Apache POI (3.11). Из-за того, что для воспроизведения некоторых отчетов требуется много времени и памяти, я провел расследование и нашел jxls, после некоторого теста, который, как я подумал, был решением. Но теперь я обнаружил проблему: не могу работать оба фреймворка вместе.
- Мне нужно обновить Apache POI с 3.11 до 3.14, чтобы работать с jxls-2.3.0
- Я сделал дополнительный пакет, чтобы мои тесты проводились с jxls, а не с проблемами
- # P2 #
private void prepareNewReport(File excelFile) { List perforaciones = makePerforacionReport .makePerforacionData(escenario);
}try (InputStream is = ReportePerforacionTotalDialog.class .getResourceAsStream("PerforacionTotal_template.xls")){ try (OutputStream os = new FileOutputStream(excelFile)) { Context context = new Context(); context.putVar("perforaciones", perforaciones); JxlsHelper.getInstance().processTemplate(is, os, context); LOGGER.logger.log(Level.INFO, "Archivo de perfortacion generado con éxito"); } } catch (IOException e) { LOGGER.logger.log(Level.SEVERE, "Problemas buscando el archivo", e); }
Как такое могло быть? В том же проекте у меня есть свой тестовый класс, просто еще один пакет, и он отлично работает. Как видите, он не сильно отличается от примера на странице jxls, и импорт такой же.
Но что еще хуже, когда я попытался очистить и собрать свой проект, я получил другую ошибку:
java.lang.RuntimeException: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for org.openxmlformats.schemas.officeDocument.x2006.docPropsVTypes.CTArray not found
Я просмотрел каждую библиотеку, которую я импортирую для работы с jxls и apache poi, и это правда, этого класса там нет. Чтобы увидеть, есть ли конфликт между этими двумя фреймворками, я исключил из пути к классам все библиотеки, необходимые для использования jxls. Очистить и построить снова, и это не проблема, у меня есть файл .jar для отправки моему клиенту, но он неполный.
Я мог бы попытаться заменить все классы, которые используют Apache POI, но это означает много работы, поскольку POI используется в моем проекте для многократного чтения файлов Excel с данными и для записи еще нескольких файлов для Excel. Я планировал использовать jxls, чтобы воспользоваться преимуществами использования шаблонов.
Буду признателен за любую помощь или предложение.