zoukankan      html  css  js  c++  java
  • JAVA 导出 Excel, 将Excel下载到本地

    昨天说了如何将数据导出成 excel 的两种方式,今天完善一下将 java 导出(文件在服务器)并下载到本地

     

    1. 触发导出 ajax 代码

                  $.ajax({
                       type: "POST",
                       url: "${ctx}/website/clsecurity/XXXXXAction_exportUserinfoData.do", 
               async:
    false,
               dataType:
    "json",
               data: {
                  "province": province,
                  "userType": userType,
                  "startDate": startDate,
                  "endDate": endDate
              },
              success:
    function(data) {
                
    var json = eval( '(' + data + ')' );
                window.open(
    "${ctx}" + json.url);
              }
           });

    2. 处理导出的方法代码片段

           List<ClUserinfo> regUsers = clSecurityService.findClUserinfos(clSecurityForm);
                
                List<TempUser> userList = new ArrayList<TempUser>();
                for (ClUserinfo userinfo : regUsers) {
                    TempUser user = new TempUser();
                    
                    user.setUserName(userinfo.getUserName());
                    user.setUserType(userinfo.getUserType());
                    user.setCompany(userinfo.getCompany());
                    user.setKeshi(userinfo.getKeshi());
                    user.setProvince(userinfo.getProvince());
                    user.setCreatedDate(userinfo.getCreatedDate());
                    user.setCreateDateStr(userinfo.getCreatedDate().toString());
                    
                    userList.add(user);
                }
                
                HSSFWorkbook wb = new HSSFWorkbook();  
                HSSFSheet sheet = wb.createSheet("注册用户表");  
                HSSFRow row = sheet.createRow((int) 0);  
                HSSFCellStyle style = wb.createCellStyle();  
                style.setAlignment(HSSFCellStyle.ALIGN_CENTER); 
          
                HSSFCell cell = row.createCell((short) 0);  
                cell.setCellValue("姓名");  
                cell.setCellStyle(style);  
                cell = row.createCell((short) 1);  
                cell.setCellValue("专委会");  
                cell.setCellStyle(style);  
                cell = row.createCell((short) 2);  
                cell.setCellValue("单位");  
                cell.setCellStyle(style);  
                cell = row.createCell((short) 3);  
                cell.setCellValue("科室");  
                cell.setCellStyle(style);  
                cell = row.createCell((short) 4);  
                cell.setCellValue("注册日期");  
                cell.setCellStyle(style);  
          
                for (int i = 0; i < userList.size(); i++) {  
                    row = sheet.createRow((int) i + 1);  
                    TempUser user = (TempUser) userList.get(i);  
                    
                    row.createCell((short) 0).setCellValue(user.getUserName());  
                    row.createCell((short) 1).setCellValue(user.getUserType());  
                    row.createCell((short) 2).setCellValue(user.getCompany());
                    row.createCell((short) 3).setCellValue(user.getKeshi());
                    row.createCell((short) 4).setCellValue(user.getCreateDateStr());
                }  
    
                try {  
                    String fileName = "RegistUserList-" + new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()) + ".xls";
                    String savaPath = ServletActionContext.getRequest().getRealPath("/upload/excel");
                    FileOutputStream fos = new FileOutputStream(savaPath + "\" + fileName); 
                    wb.write(fos); 
                    fos.close();  
    
                    Map<String,String> map = new HashMap<String,String>();
                    map.put("url", "/upload/excel/" + fileName);
                    JSONObject json = JSONObject.fromObject(map);
                    
                    this.result = json.toString();
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  

    3. result 装返回结果

      /**
         * json return
         */
        private String result;     
        
        public String getResult() {
            return result;
        }
    public void setResult(String result) { this.result = result; }

    4. XXXXXAction_XXXXXXX 方法以及 result 在 struts2 的配置

        <action name="XXXXXAction_exportUserinfoData" class="com.gzewell.ucomweb.web.security.action.XXXXXAction" method="exportUserinfoData"> 
           <result name="success" type="json"> 
             <param name="root">result</param> 
           </result> 
        </action>

    说明:

      fos:文件输出流,将文件放在服务器的 /upload/excel 目录

      result: 将路径放入map 结果以 json 的形式返回

       window.open:打开新的页面,即为需要下载的文件在服务器的位置

       ${ctx}: 为服务器地址ip | 网址的表达式 (127.0.0.1) 

      

     

  • 相关阅读:
    Working with macro signatures
    Reset and Clear Recent Items and Frequent Places in Windows 10
    git分支演示
    The current .NET SDK does not support targeting .NET Core 2.1. Either target .NET Core 2.0 or lower, or use a version of the .NET SDK that supports .NET Core 2.1.
    Build website project by roslyn through devenv.com
    Configure environment variables for different tools in jenkins
    NUnit Console Command Line
    Code Coverage and Unit Test in SonarQube
    头脑王者 物理化学生物
    头脑王者 常识,饮食
  • 原文地址:https://www.cnblogs.com/linnuo/p/6739562.html
Copyright © 2011-2022 走看看