Excel DecisionTable从newClasspathResource

时间:2016-07-21 03:46:10

标签: excel drools

在Excel文件中实现DecisionTable存在一些问题,如果我使用newClasspathResource加载excel文件,就好像我使用带文件路径的newFileResource一样,它可以正常使用同一个文件。

例外是:

Caused by: org.drools.template.parser.DecisionTableParseException: An error occurred opening the workbook. It is possible that the encoding of the document did not match the encoding of the reader.
at org.drools.decisiontable.parser.xls.ExcelParser.parseFile(ExcelParser.java:85)
at org.drools.decisiontable.SpreadsheetCompiler.parseResource(SpreadsheetCompiler.java:126)
at org.drools.decisiontable.SpreadsheetCompiler.getRuleSheetListener(SpreadsheetCompiler.java:185)
at org.drools.decisiontable.SpreadsheetCompiler.compile(SpreadsheetCompiler.java:172)
at org.drools.decisiontable.SpreadsheetCompiler.compile(SpreadsheetCompiler.java:167)
at org.drools.decisiontable.DecisionTableProviderImpl.compileResource(DecisionTableProviderImpl.java:81)
at org.drools.decisiontable.DecisionTableProviderImpl.loadFromResource(DecisionTableProviderImpl.java:44)
at org.drools.compiler.compiler.DecisionTableFactory.loadFromResource(DecisionTableFactory.java:37)
at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.decisionTableToPackageDescr(KnowledgeBuilderImpl.java:404)
at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.addPackageFromDecisionTable(KnowledgeBuilderImpl.java:374)
at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.addKnowledgeResource(KnowledgeBuilderImpl.java:766)
at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:2249)
Caused by: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Your InputStream was neither an OLE2 stream, nor an OOXML stream
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:211)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:168)
at org.drools.decisiontable.parser.xls.ExcelParser.parseFile(ExcelParser.java:83)
... 47 more

1 个答案:

答案 0 :(得分:0)

我想我找到了原因,为什么这是一个问题。实际上,通过我的gradle构建,我正在处理和过滤一些资源,并意识到xls文件也在资源中,正在通过它进行处理,并在编译的构建路径中以某种方式进行更改。

我跳过这个文件来通过构建进行过滤和处理,一切都很好。