您的位置:1010cc时时彩经典版 > 1010cc时时彩经典版 > 【1010cc时时彩经典版】ajax央浼导出Excel表格,国

【1010cc时时彩经典版】ajax央浼导出Excel表格,国

发布时间:2019-08-11 17:48编辑:1010cc时时彩经典版浏览(103)

    【1010cc时时彩经典版】ajax央浼导出Excel表格,国际化能源管理模块重构总括。SSM数据库数据导出excel,ssm数据导出excel

    首先,这是我对自己的需求而使用的逻辑,若有可以完美的地方方便告诉下小白。

    MAVEN

     

    <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.16</version>
            </dependency>
    

     

     

     

    首先,这是我对自己的需求而使用的逻辑,若有可以完美的地方方便告诉下小白。

    从17年末到18年初花了差不多三周的时间,将项目中最重要的模块之一--国际化资源管理,进行了彻底的重构。在掉了无数头发加了好多个晚上的班之后,终于改变了先前一个service解决所有逻辑的臃肿情况,代码的可读性,扩展性,模块功能的扩展性以及可用性等性能获得了很大的提升。我在这次重构中有着许许多多的思考和尝试, 对于一个工作经验仅有一年的人来说是一个不小的挑战。最终项目完成并上线之后,自己对于工作结果还挺满意的,从中也收获了很多很多,不写点总结就有点对不起自己过去三周的辛劳了。

    直接贴代码吧

    AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
    在js中使用ajax请求一般包含三个步骤:

    1、前端页面,伪异步(页面不刷新)

    为什么不用ajax呢?

    JQuery的ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型。所以就用js做个form表单请求

    上代码

    1 function exportExcel(){
    2             var myurl="${context}/assetInLibrary/export";
    3             var form=$("<form>");
    4             form.attr("style","display:none");
    5             form.attr("method","post");
    6             form.attr("action",myurl);
    7             $("body").append(form);
    8         }
    

     

    apache的poi MAVEN

     

    $("#btn-export").click(function(){
        var exportExcel = "export_excel";
        dataParams[exportExcel] = 1;
        var params = $.param(dataParams);
        var url = host "&" params;
        $('<form method="post" action="'   url   '"></form>').appendTo('body').submit().remove();
        delete dataParams[exportExcel];
    });
    
    •               1、创建XMLHttp对象
    •               2、发送请求:包括打开链接、发送请求
    •               3、处理响应

    2、在工具包中创建ViewExcel,继承AbstractExcelView

    先上代码

     1 public class ViewExcel extends AbstractExcelView {
     2 
     3     private String[] titles;
     4     
     5     //传入指定的标题头
     6     public ViewExcel(String[] titles) {
     7         this.titles=titles;
     8     }
     9     
    10     @Override
    11     protected void buildExcelDocument(Map<String, Object> model,
    12             HSSFWorkbook workbook, HttpServletRequest request,
    13             HttpServletResponse response) throws Exception {
    14         //获取数据
    15         List<Map<String, String>> list = (List<Map<String, String>>) model.get("excelList");
    16         //在workbook添加一个sheet
    17         HSSFSheet sheet = workbook.createSheet();
    18         sheet.setDefaultColumnWidth(15);
    19         HSSFCell cell=null;
    20         //遍历标题
    21         for (int i = 0; i < titles.length; i  ) {
    22             //获取位置
    23             cell = getCell(sheet, 0, i);
    24             setText(cell, titles[i]);
    25         }
    26         //数据写出
    27         for (int i = 0; i < list.size(); i  ) {
    28             //获取每一个map
    29             Map<String, String> map=list.get(i);
    30             //一个map一行数据
    31             HSSFRow row = sheet.createRow(i 1);
    32             for (int j = 0; j < titles.length; j  ) {
    33                 //遍历标题,把key与标题匹配
    34                 String title=titles[j];
    35                 //判断该内容存在mapzhong
    36                 if(map.containsKey(title)){
    37                     row.createCell(j).setCellValue(map.get(title));
    38                 }
    39             }
    40         }
    41          //设置下载时客户端Excel的名称     
    42         String filename = new SimpleDateFormat("yyyy-MM-dd").format(new Date()) ".xls";  
    43         response.setContentType("application/vnd.ms-excel");     
    44         response.setHeader("Content-disposition", "attachment;filename="   filename); 
    45         OutputStream ouputStream = response.getOutputStream();     
    46         workbook.write(ouputStream);     
    47         ouputStream.flush();     
    48         ouputStream.close();     
    49     }
    50 
    51 }
    

     

    在构造函数中传进来需导出的titles,也就是excel中的标题头,这个逻辑会有点麻烦,因为我是创建Map,让dao中查出来的数据根据我的Map(‘title’,'value')进行封装,且title要存在于传进来的titles中,剩下看源码就能明白

     

    先说说背景。在国际化管理的模块,资源被分为多个类型,每个类型有特定的管理方式。每一类型下的单个对象(即页面上展示出的一条记录),底下会包括一个或多个文件名,每一个文件名其实对应着多个文件,即单一文件名下有多个语言文件,这些文件可以理解为文件名在某种语言下的资源,例如文件A.json,底下有中文的A.json,英文的A.json等等。所有的A.json语言不同,但是共享同一套key,即相同的Key对应不同的语言的翻译,组成了不同的语言文件。一个对象的code-文件名-语言,定位出一个唯一的文件。资源管理,以单个文件为维度。

     

    在不使用任何的js框架的情况下,要想使用ajax,可能需要向下面一样进行代码的编写

    3、service中的数据封装

     1 public List<Map<String, String>> selectAllAssetInlibraryInfo() {
     2         List<AssetInlibrary> list = assetInlibraryMapper.selectByExample(null);
     3         List<Map<String, String>> mapList=new ArrayList<Map<String,String>>();
     4         for (AssetInlibrary assetInlibrary : list) {
     5             Map<String, String> map=new HashMap<String, String>();
     6             map.put("编号", assetInlibrary.getId() "");
     7             map.put("资产名称", assetInlibrary.getTitle());
     8             AssetType assetType = assetTypeMapper.selectByPrimaryKey(assetInlibrary.getAssetTypeId());
     9             map.put("资产类型", assetType.getTitle());
    10             AssetBrand assetBrand = assetBrandMapper.selectByPrimaryKey(assetInlibrary.getAssetBrandId());
    11             map.put("资产品牌", assetBrand.getTitle());
    12             AssetStorage assetStorage = assetStorageMapper.selectByPrimaryKey(assetInlibrary.getAssetStorageId());
    13             map.put("资产存放地点", assetStorage.getTitle());
    14             AssetProvider assetProvider = assetProviderMapper.selectByPrimaryKey(assetInlibrary.getAssetProviderId());
    15             map.put("资产供应商", assetProvider.getTitle());
    16             mapList.add(map);
    17         }
    18         return mapList;
    19     }
    

     

    <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.16</version>
     </dependency>
    

     

    简单说明一下:

    var xmlHttp = xmlHttpCreate();//创建对象 
    xmlHttp.onreadystatechange = function(){//响应处理 
      if(xmlHttp.readyState == 4){ 
        console.info("response finish"); 
        if(xmlHttp.status == 200){ 
           console.info("reponse success"); 
          console.info(xmlHttp.responseText); 
        } 
      } 
    } 
    xmlHttp.open("get","TestServlet",true);//打开链接 
    
    xmlHttp.send(null);//发送请求 
    
    function xmlHttpCreate() { 
      var xmlHttp; 
      try { 
        xmlHttp = new XMLHttpRequest;// ff opera 
      } catch (e) { 
        try { 
          xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");// ie 
        } catch (e) { 
          try { 
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
          } catch (e) { 
    
          } 
        } 
      } 
      return xmlHttp; 
    } 
    
    console.info(xmlHttpCreate()); 
    

    本文由1010cc时时彩经典版发布于1010cc时时彩经典版,转载请注明出处:【1010cc时时彩经典版】ajax央浼导出Excel表格,国

    关键词: