如何将整个检索表数据放入 excel in jsp

how get entire retrieved tabled data into excel in jsp

我正在使用此代码,但只有 table 行数据被输入到文件中。我正在使用 mysql 数据库。连接在 connection.jsp 中建立。 table名称是登录名。使用 poi-2.5.1.jar 文件。这段代码没有任何错误,但是如何将整个 table 数据放入 excel sheet

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
         <!DOCTYPE html>
         <html>
                <%@page import="java.sql.*"%>
<%@pageimport="java.util.*,java.io.*,javax.servlet.*,javax.servlet.http.*"%>
         <%@ page import="java.io.*"%>
         <%@include file="connection.jsp" %>
         <%@page import="  org.apache.poi.hssf.usermodel.*"%>
         <head>
            <meta httpequiv="ContentType"content="text/html;charset=UTF-8">
                 <title>JSP Page</title>
             </head>
             <% response.setContentType("application/xls");
                response.setHeader("ContentDisposition","attachment;filename=File.xls"); %>
             <body>
                 <table>
                     <tr><th>CG</th><th>CD</th></tr>
                 <%
                 Statement stmt = conn.createStatement();
          String filename="C:/Users/sangu/Downloads/data.xls" ;
         HSSFWorkbook hwb=new HSSFWorkbook();
         HSSFSheet sheet =  hwb.createSheet("sheet");

         HSSFRow row=   sheet.createRow((short)0);
             ResultSet res = stmt.executeQuery("select * from login ");
             while (res.next())
            {            
                     String cg = res.getString(1);
                 String cd = res.getString(3);
                 row.createCell((short) 0).setCellValue(cd);
         row.createCell((short) 1).setCellValue(cd);
         row.createCell((short) 1).setCellValue(cd);                
                 %>
                 <tr>
                 <td align="center"><%=cg%></td>
                 <td align="center"><%=cd%></td>
                 </tr>
                <%
         FileOutputStream fileOut =  new FileOutputStream(filename);
         hwb.write(fileOut);
         fileOut.close();
         out.println("Your excel file has been generated!");
                        hwb.write(response.getOutputStream()); }
                 %>
                 </table>
             </body>
         </html>

不确定但不应该 HSSFRow row= sheet.createRow((short)0); 在 while 循环内?所以它会为每个结果创建新行?

编辑:

                     Statement stmt = conn.createStatement();
      String filename="C:/Users/sangu/Downloads/data.xls" ;
     HSSFWorkbook hwb=new HSSFWorkbook();
     HSSFSheet sheet =  hwb.createSheet("sheet");


         ResultSet res = stmt.executeQuery("select * from login ");
         while (res.next())
        {        
             HSSFRow row=   sheet.createRow((short)0);
             String cg = res.getString(1);
             String cd = res.getString(3);
             row.createCell((short) 0).setCellValue(cd);
     row.createCell((short) 1).setCellValue(cd);
     row.createCell((short) 1).setCellValue(cd);                
             %>
             <tr>
             <td align="center"><%=cg%></td>
             <td align="center"><%=cd%></td>
             </tr>
            <%
     FileOutputStream fileOut =  new FileOutputStream(filename);
     hwb.write(fileOut);
     fileOut.close();
     out.println("Your excel file has been generated!");
                    hwb.write(response.getOutputStream()); }