Java jxls-多行(列表)绑定不';行不通

Java jxls-多行(列表)绑定不';行不通,java,excel,jxls,Java,Excel,Jxls,我正在尝试使用jxls库创建excel表单 我的excel模板是: 当我向列表中添加一个映射并绑定它时,它就工作了。 我的代码很简单: List<Map<String,Object>> sss = new ArrayList(); HashMap<String,Object> sm = new HashMap<String,Object>(); sm.put("name1", "AtestName"); sm.put("name2", "Ate

我正在尝试使用jxls库创建excel表单

我的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(); .....
listsss=newarraylist();
HashMap sm=新的HashMap();
sm.put(“名称1”、“AtestName”);
sm.put(“名称2”、“AtestName2”);
sm.put(“名称3”、“AtestName3”);
sss.add(sm);
映射模型=新的HashMap();
模型投入产出(“sData”,sss);
....  XLSTransformer transformer=新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)
listsss=newarraylist();
HashMap sm=新的HashMap();
sm.put(“名称1”、“AtestName”);
sm.put(“名称2”、“AtestName2”);
sm.put(“名称3”、“AtestName3”);
sss.add(sm);
HashMap sm2=新的HashMap();
sm.put(“名称1”、“测试名称”);
sm.put(“名称2”、“b测试名称2”);
sm.put(“名称3”、“b测试名称3”);
sss.add(sm2);
HashMap sm3=新的HashMap();
sm.put(“名称1”、“测试名称”);
sm.put(“名称2”、“CtestName2”);
sm.put(“名称3”、“CtestName3”);
sss.add(sm3);
映射模型=新的HashMap();
模型投入产出(“sData”,sss);
....  XLSTransformer transformer=新XLSTransformer()。。。。。
[06:15:10]调试-AbstractExcelView.renderMergedOutputModel(140)|从头创建Excel工作簿
[06:15:10]调试-SheetTransformer.transformSheet(72)|处理表:Sheet1
[06:15:10]调试-CollectionRowTransformer.processRowCollections(96)|----集合属性--------->sData
, 2016 6:15:10 오후 org.apache.catalina.core.StandardWrapperValve调用
:Servlet操作的Servlet.service()引发异常
java.lang.NoSuchMethodError:org.apache.poi.ss.usermodel.Sheet.getSheetConditionalFormatting()Lorg/apache/poi/ss/usermodel/SheetConditionalFormatting;
位于net.sf.jxls.util.util.copyConditionalFormat(util.java:642)
位于net.sf.jxls.util.util.copyCell(util.java:569)
位于net.sf.jxls.util.util.duplicateStyle(util.java:411)
位于net.sf.jxls.util.util.duplicateRow(util.java:244)
位于net.sf.jxls.controller.SheetTransformationControllerImpl.duplicateRow(SheetTransformationControllerImpl.java:140)
位于net.sf.jxls.transformer.CollectionRowTransformer.processRowCollections(CollectionRowTransformer.java:106)
net.sf.jxls.transformer.CollectionRowTransformer.transform(CollectionRowTransformer.java:66)
net.sf.jxls.transformer.SheetTransformer.transformSheet(SheetTransformer.java:88)
位于net.sf.jxls.transformer.XLSTransformer.transform工作簿(XLSTransformer.java:248)
位于net.sf.jxls.transformer.XLSTransformer.transformXLS(XLSTransformer.java:221)

您得到的错误
java.lang.NoSuchMethodError:org.apache.poi.ss.usermodel.Sheet.GetSheetConditionalFormat
很可能意味着您的poi版本有问题


因此,请检查您使用的Apache POI版本,以及它是否支持
Sheet.getSheetConditionalFormat()
method

我检查了我正在使用的POI 3.7。这种方法是不可行的。我把它改成3.9,它就解决了。谢谢Vysochyn先生:)