2017-03-27 8 views
0

Excel 보고서를 생성하기 위해 JXLS Java 라이브러리를 사용하고 있습니다. 샘플 getting started 자습서 (Object collection output demo)를 실행하려고합니다. 자습서에서 제안 된대로 필자는 프로젝트 빌드 파일에 필요한 라이브러리를 지정하기 위해 maven을 사용하고 있습니다. 다음은JXLS를 사용하는 org/apache/poi/openxml4j/exceptions/InvalidFormatException

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/openxml4j/exceptions/InvalidFormatException 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
    at java.lang.Class.privateGetMethodRecursive(Unknown Source) 
    at java.lang.Class.getMethod0(Unknown Source) 
    at java.lang.Class.getMethod(Unknown Source) 
    at org.jxls.util.TransformerFactory.createTransformer(TransformerFactory.java:34) 
    at org.jxls.util.JxlsHelper.createTransformer(JxlsHelper.java:217) 
    at org.jxls.util.JxlsHelper.processTemplate(JxlsHelper.java:104) 
    at com.ucas.ObjectCollectionDemo.main(ObjectCollectionDemo.java:42) 
Caused by: java.lang.ClassNotFoundException: org.apache.poi.openxml4j.exceptions.InvalidFormatException 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 9 more 

받는다는 종속성 enter image description here

자바의 스냅 샷입니다 : 아래는 내가 아래 예외가 내 일식에서 프로그램을 실행하면

List<Employee> employees = generateSampleEmployeeData(); try(InputStream is = ObjectCollectionDemo.class.getResourceAsStream("object_collection_template1.xls")) { try(OutputStream os = new FileOutputStream("target/" + fileName)) { Context context = new Context(); context.putVar("employees", employees); JxlsHelper.getInstance().processTemplate(is, os, context); } } 

을 사용하는 자바 코드는 버전 : 1.8

환경 : Windows 7

IDE : 이클립스 네온

답변

0

Apache POI 처리에 필요한 일부 XML 종속성에 문제가있는 것 같습니다.

당신의 의존성 스크린 샷에서 볼 수 있습니다.하지만 프로그램을 실행할 때 효과가 나타나지 않습니다. 종속성간에 약간의 충돌이있을 수 있습니다. 그 다음 하나 하나 자신의 종속성을 추가하고있는이 고장 지적 볼 수 있습니다

<dependency> 
     <groupId>org.jxls</groupId> 
     <artifactId>jxls</artifactId> 
     <version>2.4.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jxls</groupId> 
     <artifactId>jxls-poi</artifactId> 
     <version>1.0.12</version> 
    </dependency> 

를 작동하는 경우

은 오직 다음 두 종속성을 추가하여 최소한의 jxls 프로젝트를 만들고 참조하십시오.

+0

필자의 메이븐 저장소를 삭제하고 최소한의 jxls 프로젝트를 만들었습니다. 지금은 잘 작동하고 있습니다. – Sachin

+0

Maven을 사용하지 않는 사람을위한 통찰력을 제공 할 수 있습니까? 나는 에어 갭이있는 시스템에 있고 병을 사용해야한다. – usmcphysicist

0

하지 귀하의 질문에 코드의 방법으로 많이보고, 그래서 여기에 공백이 촬영됩니다. 최소한 object_collection_template1.xls과 버전이 일치하지 않는 것 같습니다. JXLS와 호환되는 버전과 다른 버전의 Excel로 작성되었습니다. 적어도 작성된대로.

관련 문제