在JSP上实现Apache POI的异常

时间:2016-07-20 04:19:34

标签: java excel jsp exception apache-poi

我正在尝试在JSP上实现Apache POI以读取excel文件并获取某些单元格的值并将其显示在我页面上的输入上。但是我收到了这个错误:

type Exception report

message Unable to compile class for JSP: 

description The server encountered an internal error that prevented it from fulfilling this request.

exception 
org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 16 in the jsp file: /helloWorld.jsp
HSSFWorkbook cannot be resolved to a type
13: <body>
14: 
15: <%
16:         HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("excel.xls"));
17:         HSSFSheet sheet = workbook.getSheetAt(0);
18:         HSSFRow row = sheet.getRow(1);
19:         double Something,Something1,Something2,Something3,Something4;

An error occurred at line: 17 in the jsp file: /helloWorld.jsp
HSSFSheet cannot be resolved to a type     
14: 
15: <%
16:         HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("excel.xls"));
17:         HSSFSheet sheet = workbook.getSheetAt(0);
18:         HSSFRow row = sheet.getRow(1);
19:         double Something,Something1,Something2,Something3,Something4;


An error occurred at line: 18 in the jsp file: /helloWorld.jsp
HSSFRow cannot be resolved to a type
15: <%
16:         HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("excel.xls"));
17:         HSSFSheet sheet = workbook.getSheetAt(0);
18:         HSSFRow row = sheet.getRow(1);
19:         double Something,Something1,Something2,Something3,Something4;



Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:490)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:379)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:662)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

这是我在.jsp文件中的代码:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<%@ page import="org.apache.poi.hssf.usermodel.*"%>
<%@ page import="java.io.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head></head>
<body>

<% 
     HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("excel.xls"));
     HSSFSheet sheet = workbook.getSheetAt(0);
     HSSFRow row = sheet.getRow(1);
     double Something,Something1,Something2,Something3,Something4;

        Something= row.getCell(0).getNumericCellValue();
        Something1= row.getCell(1).getNumericCellValue();
        Something2= row.getCell(2).getNumericCellValue();
        Something3= row.getCell(3).getNumericCellValue();
        Something4= row.getCell(4).getNumericCellValue(); 

 %>

<div>
    <table>
        <tr>
            <td>Something: </td>
            <td><input type="text" value="<% Something %>"></td>
        </tr>
        <tr>
            <td>Something1: </td>
            <td><input type="text" value="<% Something1 %>"></td>
        </tr>
        <tr>
            <td>Something2: </td>
            <td><input type="text" value="<% Something2 %>"></td>
        </tr>
        <tr>
            <td>Something3: </td>
            <td>    <input type="text" value="<% Something3 %>"></td>
        </tr>
        <tr>
            <td>Something4: </td>
            <td><input type="text" value="<% Something4 %>"></td>
        </tr>
    </table>
</div>
</body>
</html>

我已经添加了所需的jar文件。

修改 一开始导入就像这样:

<%@ page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%>
<%@ page import="org.apache.poi.hssf.usermodel.HSSFSheet"%>
<%@ page import="org.apache.poi.hssf.usermodel.HSSFRow"%>

但它把这个错误抛到了开头显示的错误之上:

    org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [14] in the generated java file: [C:\apache-tomcat-7.0.70\apache-tomcat-7.0.70\work\Catalina\localhost\HelloWorldJSP\org\apache\jsp\helloWorld_jsp.java]
Only a type can be imported. org.apache.poi.hssf.usermodel.HSSFWorkbook resolves to a package

An error occurred at line: [15] in the generated java file: [C:\apache-tomcat-7.0.70\apache-tomcat-7.0.70\work\Catalina\localhost\HelloWorldJSP\org\apache\jsp\helloWorld_jsp.java]
Only a type can be imported. org.apache.poi.hssf.usermodel.HSSFSheet resolves to a package

An error occurred at line: [16] in the generated java file: [C:\apache-tomcat-7.0.70\apache-tomcat-7.0.70\work\Catalina\localhost\HelloWorldJSP\org\apache\jsp\helloWorld_jsp.java]
Only a type can be imported. org.apache.poi.hssf.usermodel.HSSFRow resolves to a package

1 个答案:

答案 0 :(得分:0)

首先,您必须验证导出的war文件中是否有poi.jar文件?如果它不在那里,那么尝试重建你的战争。

如果是,请尝试这个

使用像这样的指定导入语句......

<%@ page import="org.apache.poi.hssf.usermodel.* ,java.io.*"%>

而不是

<%@ page import="org.apache.poi.hssf.usermodel.*"%>
<%@ page import="java.io.*" %>

按照Link_1Link_2

进行操作

因为错误堆栈跟踪显示错误

HSSFWorkbook cannot be resolved to a type //won't be able to find class HSSFWorkbook in library.

无法将类解析为类型,特定类不是 可以在你的战争库中找到。