• 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) 

      

     

  • 相关阅读:
    GL_TRIANGLE_FAN Vs GL_TRIANGLE_STRIP
    Color bleeding与caustics概念解析
    Two path ray tracing与Photon Mapping(粒子跟踪)
    右手定则判断法线方向
    正确使用atoi
    深入探讨透视投影坐标变换
    gluBuild2DMipmaps与glTexImage2D与glGenTexture()函数
    OpenGL纹理贴图流程
    int main( int argc, char ** argv)在VS2008中的配置的一个实例
    c++标准库中vector数组遍历时的用法
  • 原文地址:https://www.cnblogs.com/linnuo/p/6739562.html
Copyright © 2020-2023  润新知