2012-07-06 77 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在發生異常報告中得到相同的描述 - 我想,這可能是你的解決方案?