jxls - привязка нескольких строк (списков) не работает

Я пытаюсь создать форму excel, используя библиотеку jxls.

мой шаблон excel:

введите здесь описание изображения

когда я просто добавляю одну карту в список и привязываю ее, она работает. мой код просто:

List<Map<String,Object>> sss = new ArrayList();

HashMap<String,Object> sm = new HashMap<String,Object>();
sm.put("name1", "AtestName");
sm.put("name2", "AtestName2");
sm.put("name3", "AtestName3");
sss.add(sm);

Map<String, Object> model = new HashMap<String,Object>();
model.put("sData", sss);
....  XLSTransformer transformer = new XLSTransformer(); .....

успешный_результат

но когда я добавляю несколько карт в список и привязываю их, исключение не выдается. Я слышал, что библиотека jxls автоматически распознает список. Что я делаю?

List<Map<String,Object>> sss = new ArrayList();
HashMap<String,Object> sm = new HashMap<String,Object>();
sm.put("name1", "AtestName");
sm.put("name2", "AtestName2");
sm.put("name3", "AtestName3");
sss.add(sm);

HashMap<String,Object> sm2 = new HashMap<String,Object>();
sm.put("name1", "BtestName");
sm.put("name2", "BtestName2");
sm.put("name3", "BtestName3");
sss.add(sm2);

HashMap<String,Object> sm3 = new HashMap<String,Object>();
sm.put("name1", "CtestName");
sm.put("name2", "CtestName2");
sm.put("name3", "CtestName3");
sss.add(sm3);

Map<String, Object> model = new HashMap<String,Object>();
model.put("sData", sss);
....  XLSTransformer transformer = new XLSTransformer(); .....




[ 06:15:10] DEBUG - AbstractExcelView.renderMergedOutputModel(140) | Created Excel Workbook from scratch
[ 06:15:10] DEBUG - SheetTransformer.transformSheet(72) | Processing sheet: Sheet1
[ 06:15:10] DEBUG - CollectionRowTransformer.processRowCollections(96) | ----collection-property--------->sData
, 2016 6:15:10 오후 org.apache.catalina.core.StandardWrapperValve invoke
: Servlet.service() for servlet action threw exception
java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Sheet.getSheetConditionalFormatting()Lorg/apache/poi/ss/usermodel/SheetConditionalFormatting;
    at net.sf.jxls.util.Util.copyConditionalFormat(Util.java:642)
    at net.sf.jxls.util.Util.copyCell(Util.java:569)
    at net.sf.jxls.util.Util.duplicateStyle(Util.java:411)
    at net.sf.jxls.util.Util.duplicateRow(Util.java:244)
    at net.sf.jxls.controller.SheetTransformationControllerImpl.duplicateRow(SheetTransformationControllerImpl.java:140)
    at net.sf.jxls.transformer.CollectionRowTransformer.processRowCollections(CollectionRowTransformer.java:106)
    at net.sf.jxls.transformer.CollectionRowTransformer.transform(CollectionRowTransformer.java:66)
    at net.sf.jxls.transformer.SheetTransformer.transformSheet(SheetTransformer.java:88)
    at net.sf.jxls.transformer.XLSTransformer.transformWorkbook(XLSTransformer.java:248)
    at net.sf.jxls.transformer.XLSTransformer.transformXLS(XLSTransformer.java:221)

person DKWoo    schedule 15.02.2016    source источник


Ответы (1)


Ошибка, которую вы получаете java.lang.NoSuchMethodError:org.apache.poi.ss.usermodel.Sheet.getSheetConditionalFormatting, скорее всего, означает, что у вас есть проблема с версиями POI.

Поэтому, пожалуйста, проверьте версию Apache POI, которую вы используете, и поддерживает ли она метод Sheet.getSheetConditionalFormatting().

person Leonid Vysochyn    schedule 15.02.2016
comment
Я проверил POI 3.7, которым пользуюсь. Метода нет. Я изменил его на 3.9, и это решено. Спасибо, Высочин :) - person DKWoo; 17.02.2016