您好我想使用Apache POI库向网页显示Microsoft文档内容
这可以作为一个java应用程序正常工作。
但是应用程序在jsp上抛出异常
PS
以下是我目前的工作
<%@ page import="java.io.*" %>
<%@ page import="org.apache.poi.openxml4j.opc.OPCPackage" %>
<%@ page import="org.apache.poi.xwpf.extractor.XWPFWordExtractor" %>
<%@ page import="org.apache.poi.xwpf.usermodel.XWPFDocument" %>
<body>
<form name="form1" method="get" action="FileServlet"
style="height: 78px;">
<input type="file" name="xls_filename" align="top"
onchange="form1.submit()">
</form>
<%
String filename = request.getParameter("xls_filename");
if (filename != null && !filename.equals("")) {
%>
<br>You chose the file
<%=filename%>.
<br>It's contents are:
<%
InputStream fs = null;
String fileData;
XWPFWordExtractor extractor = null;
try {
fs = new FileInputStream(filename);
XWPFDocument hdoc = new XWPFDocument(OPCPackage.open(fs));
extractor = new XWPFWordExtractor(hdoc);
fileData = extractor.getText();
System.out.println(fileData);
// document.add(new Paragraph(fileData));
System.out.println(" pdf document created");
} catch (IOException e) {
System.out.println("IO Exception");
e.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
// document.close();
}
%>
<%
}
%>
</body>
堆栈跟踪:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:457)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
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$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
以上是完整的堆栈跟踪和错误,显示为:
jsp文件中的第40行:/index.jsp发生错误 XWPFDocument无法解析为类型
jsp文件中的第40行:/index.jsp发生错误 OPCPackage无法解决
jsp文件中的第42行:/index.jsp发生错误 XWPFWordExtractor无法解析为类型
答案 0 :(得分:3)
未将jar库正确添加到类路径
DOM4J-1.6.1.jar,
XMLBeans的-2.3.0.jar,
POI-3.9-20121203.jar,
poi.ooxml-3.9-20121203.jar,
poi.ooxml-架构 - 3.9-20121203.jar,
将jar放在lib上
适合我
感谢您的帮助
答案 1 :(得分:2)
您需要确保在jsp中添加导入并在WEB-INF / lib中包含所有需要的jar
<%@ page import="java.io.*" %>
<%@ page import="org.apache.poi.xwpf.extractor.*" %>
<%@ page import="org.apache.poi.xwpf.usermodel.*" %>
<%@ page import="org.apache.poi.openxml4j.opc.*" %>
<%@ page import="org.apache.xmlbeans.*" %>