J'obtiens une erreur :: org.apache.pi.openxml4j.des exceptions.InvalidFormatException ne peut pas être résolu
J'obtiens une erreur :: org.apache.pi.openxml4j.des exceptions.InvalidFormatException ne peut pas être résolu.
Voici le code de mes classes java... Ce que je veux est de générer un rapport excel.. s'il vous plaît me dire comment faire pour donner le chemin d'accès dans le transformateur.transformXLS( templateFileName, les haricots, les destFileName) méthode.. Devrais-je copier les fichiers excel, quelque part à l'intérieur de mon projet web??
Je prends l'entrée de l'id de l'utilisateur :: utilisation de la takeinput.jsp, alors la valeur de l'id d'aller à ReportServlet puis à ReportGen... là Où je suis à l'écriture de code jdbc pour récupérer les valeurs de la base de données. et la génération d'une feuille excel . s'il vous plaît aider ??
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(Seule la méthode 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)
- Selon l'exception, il semble qu'il vous manque un fichier jar contenant openxml4j.des exceptions.InvalidFormatException. ("openxml4j.des exceptions.InvalidFormatException ne peut pas être résolu")
Vous devez vous connecter pour publier un commentaire.
Que vous pourriez avoir oublié Apache POI jar dans votre classpath.
Si vous regardez de près, c'est un problème de ne pas avoir les fichiers JAR nécessaires. Votre code se réfère à la bibliothèque (un fichier jar) qui dépend de la classe(InvalidFormatException) ce n'est pas une partie de ce pot et doit se trouver dans un autre fichier JAR. De ce que je peux d'autres avec un peu de googling, c'est dans l'apache poi paquet, dont le fichier JAR est pas sur votre classpath.
L'jxls-core.jar a la suite de l'arbre des dépendances:
Vous avez besoin de mettre tous d'entre eux dans votre classpath.
Plus précisément, le " org.apache.pi.openxml4j.des exceptions.InvalidFormatException' classe 'poi-ooxml-schemas.jar'.
C'est pourquoi j'aime l'utilisation de maven. Le maven résout tous les problèmes automatiquement.