Jxls: преобразователь имеет значение null

Я использую Jxls для записи данных в файл excel.

Для этого у меня есть шаблон xls R.raw.object_collection_xmlbuilder_template_products_list, который находится в папке */res>raw, а файл компоновщика xml R.xml.excel_template_products_list находится в папке */res>xml.

try (InputStream is = mContext.getResources().openRawResource(R.raw.object_collection_xmlbuilder_template_products_list)) {
                try (OutputStream os = new FileOutputStream(excel_file)) {
                    Transformer transformer = TransformerFactory.createTransformer(is, os);

                    try (InputStream configInputStream = mContext.getResources().openRawResource(+R.xml.excel_template_products_list)) {

                        AreaBuilder areaBuilder = new XmlAreaBuilder(configInputStream, transformer);
                        List<Area> xlsAreaList = areaBuilder.build();
                        Area xlsArea = xlsAreaList.get(0);

                        org.jxls.common.Context context = new org.jxls.common.Context();
                        context.putVar("products", hashmap_list);

                        xlsArea.applyAt(new CellRef("Result!A1"), context);
                        transformer.write();
                    }
                }
            } catch (Exception ex) {
                    aLog.error(ex);
        }

Но объект Transformer возвращается как null. А для строки List<Area> xlsAreaList = areaBuilder.build(); выдает:

Method threw 'java.lang.NoClassDefFoundError'
exception.org.jxls.builder.xml.AreaAction

Это файлы jar, которые я добавил:

'libs/jxls-2.4.0.jar'
'libs/jxls-poi-1.0.12.jar'
'libs/slf4j.api-1.6.1.jar'

В одном из решений было предложено добавить зависимость maven, например:

maven {
        url "https://repo1.maven.org/maven2/"
    }

Но я все еще получаю исключение.

Итак, есть идеи, почему трансформатор может быть нулевым и как я могу исправить исключение? Спасибо.

Изменить: это содержимое xml:

<?xml version="1.0" encoding="utf-8"?>
<xls>
    <area ref="Template!A1:T31">
        <each items="products" var="products" ref="Template!A4:T31">
            <area ref="Template!A4:T31"/>
        </each>
    </area>
</xls>

Это шаблон xls:введите здесь описание изображения


person ashwin mahajan    schedule 21.07.2017    source источник


Ответы (1)


Проверьте репозиторий проекта jxls-demo, чтобы узнать, как настраиваются зависимости Jxls для проекта Maven.

person Leonid Vysochyn    schedule 24.07.2017