2015-12-03 43 views
2

在JSP生成10張隨機數後,再點擊「導出到Excel」按鈕獲取不同的隨機數。生成的Excel顯示10個不同的數字。 random numbers on jsp page使用JSP出口時要練成

random numbers on excel file

爲什麼出現這種情況?以及如何解決這個問題?

JSP文件<身體>的代碼如下所示:

<% 
    String exportToExcel = request.getParameter("exportToExcel"); 
    if (exportToExcel != null 
      && exportToExcel.toString().equalsIgnoreCase("YES")) { 
     response.setContentType("application/vnd.ms-excel"); 
     response.setHeader("Content-Disposition", "inline; filename=" 
       + "excel.xls"); 

    } 

    for(Integer i=0;i<10;i++){ 
     String randomNum = (RandomStringUtils.random(1, false, true)); 
%> 
     <%=randomNum%> 
     <br/> 
    <% 
    } 
    if (exportToExcel == null) { 
    %> 
     <br/> 
     <a href="./test/randomNum.jsp?exportToExcel=YES"><button>Export to Excel</button></a> 
    <% 
    } 
    %> 

回答

1

那是因爲你讓每一次新的請求,並得到生成一組新號碼的各一次。

請求1:生成數字 然後您單擊該鏈接併發出另一個請求,它生成一組您在Excel表單中看到的新數字。

爲了能夠出口的第一個請求數,你必須將它們保存在您的會話,並檢索它們:

考慮這個例子代碼:

<%@page import="java.util.Random"%> 
<%@page import="java.util.ArrayList"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <% 
      String exportToExcel = request.getParameter("exportToExcel"); 
      if (exportToExcel != null 
        && exportToExcel.toString().equalsIgnoreCase("YES")) { 
       response.setContentType("application/vnd.ms-excel"); 
       response.setHeader("Content-Disposition", "inline; filename=" 
         + "excel.xls"); 

       ArrayList<Integer> numbers = (ArrayList<Integer>)session.getAttribute("NUMBERS"); 
       for(Integer x:numbers){ 
        out.print(x); 
        out.print("<br/>"); 
       } 

      } else { 
       ArrayList<Integer> numbers = new ArrayList<Integer>(); 
       Random rand = new Random(); 
       for (Integer i = 0; i < 10; i++) { 
        String randomNum = String.valueOf(rand.nextInt()); 
        numbers.add(Integer.parseInt(randomNum)); 

     %> 
     <%=randomNum%> 
     <br/> 
     <% 
      } 
      if (exportToExcel == null) { 
     %> 
     <br/> 
     <a href="randomNum.jsp?exportToExcel=YES"><button>Export to Excel</button></a> 
     <%    } 
       //store arraylist in session 
       session.setAttribute("NUMBERS", numbers); 
      } 
     %> 
    </body> 
</html> 

,並會輸出:

enter image description here

希望這有助於...

+0

它的工作原理。非常感謝! –

+0

我可以問如果我想再增加一列,它應該如何改變? 另外,當我作爲表格製作時,如何將表頭保存到excel中? –

+0

而不只是在不同的線路輸出數量'的out.print(X)的;的out.print(「
」);'你應該建立一個HTML表格樣式元素 – MaVRoSCy