linnuo

昨天说了如何将数据导出成 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) 

  

 

 

分类:

技术点:

相关文章: