2012-07-06 76 views
-3

我有以下代码用于将数据从MySQL数据库写入excel文件。类型异常:内部错误()

对于我下载org.apache.poi包,我把在类文件夹中的Tomcat

<%@ page import="java.io.*"%> 
<%@ page import="java.sql.*"%> 
<%@ page import="java.io.*"%> 
<%@ page import="java.util.ArrayList"%> 
<%@ page import="java.util.Hashtable"%> 
<%@ page import="javax.servlet.http.*,javax.servlet.*"%> 
<%@ page import="java.lang.*"%> 
<%@ page import="java.util.*"%> 
<%@ page import="java.sql.ResultSet"%> 
<%@ page import="java.sql.ResultSetMetaData"%> 
<jsp:directive.import></jsp:directive.import> 
<jsp:directive.import></jsp:directive.import> 
<jsp:directive.import></jsp:directive.import> 
<jsp:directive.import></jsp:directive.import> 
<jsp:directive.import></jsp:directive.import> 
<% 
    try{ 
    String filename="D:/data.xls" ; 
    HSSFWorkbook hwb=new HSSFWorkbook(); 
    HSSFSheet sheet = hwb.createSheet("new sheet"); 

    HSSFRow rowhead= sheet.createRow((short)0); 
    rowhead.createCell((short) 0).setCellValue("BID"); 
    rowhead.createCell((short) 1).setCellValue("BELONGING_TYPE"); 
    rowhead.createCell((short) 2).setCellValue("BELONGING_TEXT"); 

    Class.forName("com.mysql.jdbc.Driver"); 
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/yatin", "root", "root"); 
    Statement st=con.createStatement(); 
    ResultSet rs=st.executeQuery("Select * from tm_belonging"); 
    int i=1; 
    while(rs.next()){ 
    HSSFRow row= sheet.createRow((short)i); 
    row.createCell((short) 0).setCellValue(rs.getInt("BID")); 
    row.createCell((short) 1).setCellValue(rs.getString("BELONGING_TYPE")); 
    row.createCell((short) 2).setCellValue(rs.getString("BELONGING_TEXT")); 
    i++; 
    } 
    FileOutputStream fileOut = new FileOutputStream(filename); 
    hwb.write(fileOut); 
    fileOut.close(); 
    out.println("Your excel file has been generated!"); 

    } catch (Exception ex) { 
     System.out.println(ex); 
     ex.printStackTrace(); 

    } 
%> 

的ROOT目录,但我收到以下错误

告诉我有什么不对劲的地方

类型的异常报告消息:

描述服务器遇到我内部错误()阻止它履行这个请求。

例外:

org.apache.jasper.JasperException: /ExcelReport.jsp(11,4) Invalid directive 
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40) 
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407) 
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88) 
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:472) 
    org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1748) 
    org.apache.jasper.compiler.Parser.parse(Parser.java:127) 
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255) 
    org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:120) 
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:180) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:347) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:327) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:314) 
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
+1

'<%@ import =“org.apache.poi.hssf.usermodel。*”%>'猜测这应该是'<%@ page import =“org.apache.poi.hssf.usermodel。* “%>'? – verisimilitude 2012-07-06 09:10:18

+0

另外你在JSP中有这么多的代码? – verisimilitude 2012-07-06 09:11:56

+1

你可以至少从你自己的代码片段中删除_comments_,然后再发布它们,更不用说可怕的无法读取的格式了...... – 2012-07-06 09:13:33

回答

0

第一次失败我可以检测的是,文件名必须是 “d:\ data.xls”。如果我把(D:/data.xls)这样的文件名放到我的(正确工作的)代码中,我就可以使用反斜杠(而在Linux中它不应该使用D:...)

m在发生异常报告中得到相同的描述 - 我想,这可能是你的解决方案?