java使用freemarker作为模板导出Excel表格

1:首先新建一个excel表格自己弄好格式如下图

java使用freemarker作为模板导出Excel表格_第1张图片

2:把excel 表格另存为xml格式文件如下图

java使用freemarker作为模板导出Excel表格_第2张图片

3:这个时候的文件就是xml 格式的文件了,在eclipse里面项目工程里面新建一个文件后缀为.ftl 然后把弄好的xml文件内容直接复制粘贴到.ftl文件里面

java使用freemarker作为模板导出Excel表格_第3张图片

4.看一下js代码

//导出备份日志报表
    export_backup_log_report:function(url)
    {
        var startime=$("#time1").val();
        var endtime=$("#time2").val();
        if(confirm("确定要导出?")){
            $.ajax({
                type : "post",// 指定是post还是get encodeURI()
                url : ""+url+"?startime="+startime
                +"&endtime="+endtime,// 发送请求的地址
                async : true, // 默认为true为异步,false为同步
                dataType : "json",
                contentType:'application/x-www-form-urlencoded; charset=UTF-8',
                beforeSend: function (XMLHttpRequest) {
                    XMLHttpRequest.setRequestHeader("Accept", "application/json");
                },
                error : function(err) {// 如果确定能正确运行,可不写
                    alert("服务器正忙,请稍后再试!");
                    top.location ="logout";
                },
                success : function(result){
                    var status=result.status;
                    var msg=result.msg;
                    if(status==0){
                        var report_export_url=result.data.report_export_url;
                        var url=report_export_url+"备份日志报表.xls";
                        window.open(url);
                    }else
                    {
                        alert(msg);
                    }
                }
            });
        }
    },

 

5.看一下java代码

//导出备份日志报表
    @RequestMapping(value="/admin/backupLogReport",method={RequestMethod.GET,RequestMethod.POST})
    @ResponseBody
    public WebResult backupLogReport(HttpServletRequest request,HttpServletResponse response,
            @RequestParam(value="page",defaultValue="0") int page,
            @RequestParam(value="searchvalue" ,defaultValue="") String searchvalue,
            @RequestParam(value = "startime", defaultValue = "") String startime,
            @RequestParam(value = "endtime", defaultValue = "") String endtime) throws Exception{
        
        response.setContentType("text/html;charset=UTF-8");   
        request.setCharacterEncoding("UTF-8");  
        String fileName ="备份日志报表.xls";  
        
        List list=null;
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        
        String templateDir = request.getSession().getServletContext().getRealPath("/")+"template";//模板路径 
        String excelPath = request.getSession().getServletContext().getRealPath("/")+"tempfile";//导出地址
        try{
            //初始化时间  
            if(StringUtils.isEmpty(startime) || StringUtils.isEmpty(endtime))
            {
                startime=WebUtil.formatBeginDate();
                endtime=sdf.format(WebUtil.getDateAfter(new Date(), 1));
            }
            list=baseDao.getListByLike(TblLogsBk.class, "bktime",sdf.parse(startime), sdf.parse(endtime), "id", "desc", 0,10000);
            for(TblLogsBk log:list)
            {
                // 1.手动 2.自动
                if(log.getBktype().equals("1")) log.setBktype("手动");
                if(log.getBktype().equals("2")) log.setBktype("自动");
            }
            if(list!=null && list.size()>0)
            {
                if(list.size()>10000) return WebResult.error("最多导出10000条记录!", null); Map dataMap = new HashMap();
                dataMap.put("backupLoglist",list);
                dataMap.put("totalrecord",list.size()+"条");
                TemplateParseUtil.parse(templateDir, "backuplog.ftl",excelPath+"/"+fileName,dataMap);
                
                String report_export_url = ReadResource.report_export_url;//下载地址
                HashMap valuemap=WebUtil.getHashMap();
                valuemap.put("report_export_url",report_export_url);
                return WebResult.success("导出成功",valuemap);  
            }else
            {
                return WebResult.error("没有可导数据!", null);  
            }
        }catch(Exception e)
        {
            e.printStackTrace();
        }
        
        return WebResult.error("导出失败", null); 
    }

6.自己去设置下载地址

7.以下是ftl文件配置



 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 
  Administrator
  Administrator
  2008-09-11T17:22:52Z
  2018-11-19T06:57:23Z
  12.00
 

 
  5715
  12765
  0
  105
  False
  False
 

 
 
 
 
 
 
 

 
 

   x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
   
   
   
   
   
   
    备份日志报表
   

   
    IP
    备份类型
    端口号
    用户名
    保存路径
    文件名
    数据库名
    备份时间
   

  <#list backupLoglist as backupqust>
   
    ${backupqust.serverip!}
    ${backupqust.bktype!}
    ${backupqust.portnum!}
    ${backupqust.username!}
    ${backupqust.savepath!}
    ${backupqust.filename!}
    ${backupqust.databasename!}
    ${backupqust.bktime!}
   

   
 

 
   
   

   

   
   
   
   
    9
    600
    600
   

   
   
   
     3
     3
     4
   

   

   False
   False
 
 
 
     x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
 

 
   
   

   

   
   
   False
   False
 
 
 
     x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
 

 
   
   

   

   
   
   False
   False
 
 

 

你可能感兴趣的:(后台)