2012-02-22 36 views
0

エラーが発生しました:: org.apache.poi.openxml4j.exceptions.InvalidFormatExceptionを解決できません。エラーが発生しています:: org.apache.poi.openxml4j.exceptions.InvalidFormatExceptionを解決できません。

私のJavaクラスのコードは...私が欲しいのは、Excelのレポートを生成することです..どのようにtransformer.transformXLS(templateFileName、beans、destFileName)メソッドのパスを与えるか教えてください..私はコピーする必要があります私のWebプロジェクトのどこかのファイルをExcel?

私はuser ::からtakeinput.jspを使用して入力を取得していますが、idの値はReportServletに、次にReportGenに移動します。データベースから値を取得するためのjdbcコードを記述しています。エクセルシートを作成する。助けてください ??

takeinput.jsp

<body> 

<form id="reportformid" name="reportform" action="ReportServlet" method="get"> 
Enter the ID of the person :: <input id="idid" type="text" name="id"/><br><br><br> 

<button id="button" name="reportbutton" type="submit"></button> 
</form> 

</body> 

のweb.xml ::

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> 
    <servlet> 
    <servlet-name>Name</servlet-name> 
    <servlet-class> 
      classes.web.ReportServlet 
     </servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Name</servlet-name> 
    <url-pattern>/ReportServlet</url-pattern> 
    </servlet-mapping> 
</web-app> 

ReportServlet.java(GETメソッドのみ)

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String id = request.getParameter("id"); 
     ReportGen obj = new ReportGen(); 
     obj.getReport(id); 
    } 

ReportGen.java

package classes.web; 

import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.util.HashMap; 
import java.util.Map; 

import org.apache.commons.beanutils.RowSetDynaClass; 

import net.sf.jxls.report.ResultSetCollection; 
import net.sf.jxls.transformer.XLSTransformer; 

public class ReportGen { 

    HandleConnections obj = new HandleConnections(); 
    Connection con=null; 
    ResultSet rs = null; 
    Statement st = null; 
    public void getReport(String id){ 
     String templateFileName = "/GenerateReport/WebContent/WEB-INF/lib/Source.xls"; 
     String destFileName = "/GenerateReport/WebContent/WEB-INF/lib/Dest.xls"; 
     try{ 
      con = obj.getConnection(); 
      st = con.createStatement(); 
      String query = "SELECT F_Name, L_Name, P_Address FROM Employee_Table"; 
      rs = st.executeQuery(query); 
      RowSetDynaClass rsdc = new RowSetDynaClass(rs, false); 
      Map beans = new HashMap(); 
      beans.put("employee", rsdc.getRows()); 
      XLSTransformer transformer = new XLSTransformer(); 
      transformer.transformXLS(templateFileName, beans, destFileName); 

     } throws ParsePropertyException 
     catch(Exception e){System.out.println(e);} 
} 
} 

STACKTRACE ::

Feb 22, 2012 3:09:17 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [Name] in context with path [/GenerateReport] threw exception [Servlet execution threw an exception] with root cause 
java.lang.Error: Unresolved compilation problems: 
    The type org.apache.poi.openxml4j.exceptions.InvalidFormatException cannot be resolved. It is indirectly referenced from required .class files 
    The type org.apache.poi.ss.usermodel.Workbook cannot be resolved. It is indirectly referenced from required .class files 
    The method transformXLS(String, Map, String) from the type XLSTransformer refers to the missing type InvalidFormatException 
    Syntax error on tokens, delete these tokens 

    at classes.web.ReportGen.<init>(ReportGen.java:32) 
    at classes.web.ReportServlet.doGet(ReportServlet.java:30) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
+0

例外によると、openxml4j.exceptions.InvalidFormatExceptionを含むjarファイルが見つからないようです。 ( "openxml4j.exceptions.InvalidFormatExceptionを解決できません") –

答えて

0

よく見ると、これは、必要なJARファイルを持っていない問題です。あなたのコードは、クラスに依存するライブラリ(jarファイル)を参照します(InvalidFormatException)、そのjarの一部ではなく、他のJARファイルになければなりません。私が少しでもグーグルでできることから、これはapache poiパッケージに含まれています。そのパッケージのJARファイルはクラスパスにありません。

0

jxls-core.jarには、以下の依存関係ツリーを持っています

[INFO] \- net.sf.jxls:jxls-core:jar:1.0.3:compile 
[INFO] +- org.apache.commons:commons-jexl:jar:2.0.1:compile 
[INFO] \- org.apache.poi:poi-ooxml:jar:3.9:compile 
[INFO]  \- org.apache.poi:poi-ooxml-schemas:jar:3.9:compile 
[INFO]   \- org.apache.xmlbeans:xmlbeans:jar:2.3.0:compile 
[INFO]    \- stax:stax-api:jar:1.0.1:compile 

あなたは、あなたのクラスパスにそれらのすべてを置く必要があります。

より具体的には、 'org.apache.poi.openxml4j.exceptions.InvalidFormatException'クラスは 'poi-ooxml-schemas.jar'にあります。

これは私がMavenを使うのが好きな理由です。 Mavenはこれらの問題をすべて自動的に解決します。

関連する問題