Я использую 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>