下载整个过程:通过已有的Excel模版,前台显示的某些变量通过后台传到模版中,在后台系统自动组装下载路径和下载名,此下载有一个缺陷就是不能够在页面选择下载路径。

实现过程:

1.建立模版

(1)如果要下载的是word,首先通过word建立模版;如果要下载的是Excel,首先通过Excel建立模版。

(2)将里边的变量使用${变量名}代替

(3)另存为以后缀.xml的格式(这里要注意:如果转成xml之后,里边有${&**&*&8%$变量名**************}的,则需去掉多余的保证freemarker标签完整的前提下将这里改为${变量名})。

(4)将xml后缀改为ftl后缀

2.在工程中加入freemarker.jar

3.在工程中加入以下代码

1)将变量的值存入map中:

/** 用于组装word页面需要的数据 */
            Map<String, Object> dataMap = new HashMap<String, Object>();
            /** 组装数据 */
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
            dataMap.put("currentday",sdf.format(new Date()));
            dataMap.put("jhxf",jhxf);
            dataMap.put("jhyf",map.get("jhyf"));
            dataMap.put("jksz",map.get("jksz") );
            dataMap.put("jhxfse", map.get("jhxfse"));
            dataMap.put("ldjxbd", ldjxbd);
            dataMap.put("ldbdse", map.get("ldbdse"));
            dataMap.put("jhyc", jhyc);
            dataMap.put("jhycse", map.get("jhycse"));
            dataMap.put("dwmc", map.get("dwmc"));
            dataMap.put("swjg", map.get("swjg"));
            dataMap.put("jssbyf", map.get("jssbyf"));
            dataMap.put("nsrsbh", map.get("nsrsbh"));

2)组装文件的文件名(每次的文件名都不一样)

/** 文件名称,唯一字符串 */
            Random r=new Random();
            SimpleDateFormat sdf1=new SimpleDateFormat("yyyyMMdd_HHmmss_SSS");
            StringBuffer sb=new StringBuffer();
            sb.append(sdf1.format(new Date()));
            sb.append("_");
            sb.append(r.nextInt(100));

3)设置保存路径

//文件路径
            filePath="F:/HGJKS_tzsxz";
            //文件唯一名称
            fileOnlyName = "exportWord_"+sb+".xls";
            /** 生成word */

}

4)生成word

try {
                //创建配置实例
                Configuration configuration = new Configuration();
                //设置编码
                configuration.setDefaultEncoding("UTF-8");
                //ftl模板文件统一放至 com.lun.template 包下面
                configuration.setClassForTemplateLoading(WordUtil.class,"/com/foresee/hgjks/front/template");
                //获取模板
                Template template = configuration.getTemplate("zzstzsqr.ftl");
                //输出文件
                File outFile = new File(filePath+File.separator+fileOnlyName);
                //如果输出目标文件夹不存在,则创建
                if (!outFile.getParentFile().exists()){
                    outFile.getParentFile().mkdirs();
                }
                //将模板和数据模型合并生成文件
                Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8"));
                //生成文件
                template.process(dataMap, out);
                //关闭流
                out.flush();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

******************如果有要遍历的列表*******************

java代码中:

1.定义一个list

2.将list放入要存的map里边

freemarker中:

给要遍历的地方加上<#list></#list>

<#list xflist as xftest>----xflist是java中map里边的要遍历的list,xftest是别名。

遍历的时候${xftest.xfxh}。

整体如下:

<#list xflist as xftest>
   <Row ss:Height="14.25">
    <Cell ss:StyleID="s64"><Data ss:Type="String">${xftest.xfxh}</Data></Cell>
    <Cell ss:StyleID="s65"><Data ss:Type="String">海关缴款书</Data></Cell>
    <Cell ss:StyleID="s65"><Data ss:Type="String">-</Data></Cell>
    <Cell ss:StyleID="s64"><Data ss:Type="String">${xftest.xfpzhm}</Data></Cell>
    <Cell ss:StyleID="s65"><Data ss:Type="String">-</Data></Cell>
    <Cell ss:StyleID="s64"><Data ss:Type="String">${xftest.xfkjrq}</Data></Cell>
    <Cell ss:StyleID="s65"><Data ss:Type="String">-</Data></Cell>
    <Cell ss:StyleID="s64"><Data ss:Type="String">${xftest.xfse}</Data></Cell>
   </Row>
</#list>

java使用freemarker模版下载成Excel文件相关推荐

  1. java根据Freemarker模板渲染出Excel文件并在浏览器中下载

    **java根据Freemarker模板渲染出Excel文件并在浏览器中下载** 准备工作 1.导入的依赖 2.创建模板 Freemrker语法大全: [Freemarker语法使用请点击该链接跳转学 ...

  2. excel通过转成xml格式模板,下载成excel文件

    源代码: report ztest_down_excel.data: begin of i_file occurs 0,val(255) type c,end of i_file.data begin ...

  3. pdf转换成excel文件_将PDF文件转换为Excel

    pdf转换成excel文件 When I got back to my office after a recent vacation, there was an email from Una, abo ...

  4. 报表如何批量导出成 excel 文件

    需求说明 报表展现后可以通过工具栏中的导出按钮将当前展现的报表导出成 excel 文件,但是在实际使用中通常会要求报表不需要展现,直接通过一些操作将报表导出成 excel 文件,并且往往会要求批量导出 ...

  5. sqlite mysql excel_SQlite数据库信息怎么转成excel文件?

    展开全部 下面的程序能将SQlite数据库信息怎么转成excel文件:package zhaoxing.android.tool; import java.io.File; import java.i ...

  6. Vue将echarts数据导出成excel文件

    Vue将echarts数据导出成excel文件 一.下载vendor插件 下载 vendor 文件放置项目的 src 目录下 链接:https://pan.baidu.com/s/1XYYQ186zo ...

  7. 在线JSON转换成Excel文件工具

    在线JSON转换成Excel文件工具 在线JSON转换成Excel文件工具 本工具可以将JSON数据在浏览器本地转换成Excel支持一键下载. JSON:(JavaScript Object Nota ...

  8. vue导出excel加一个进度条_vue项目中如何把数据导出成excel文件

    Loading... 关于vue中如何把数据导出成excel文件 ### 1. 安装依赖 ``` yarn add file-saver yarn add xlsx yarn add script-l ...

  9. 怎么把pdf转换成excel文件?

    怎么把pdf转换成excel文件?互联网时代的今天,许多办公技巧都有了翻天覆地的变化,其中尤以pdf.excel.word.图片几种文件的相互转换变化较多.过去的办公文员们无论是把pdf转换成exce ...

  10. 怎么把PDF转换成Excel文件?分享两种简单好用的转换方法

    怎么把PDF文件转换成Excel文件呢?大家在日常的办公过程中,传输文件大多数都会使用PDF文件格式,有时候出于工作的需要,在我们接收到一份PDF文件时,要求我们把PDF文件做成Excel表格,我们如 ...

最新文章

  1. 巧用组策略关闭危险端口
  2. 制作静态链接库和动态链接库
  3. 3.1线性判别函数【模式识别】
  4. 【STM32】标准外设库,系统架构,时钟系统
  5. 2.6 datetime 模块
  6. docker 安装nginx_使用 Docker 在你的 mac 上搭建个服务器
  7. 中小企业信息化,“轻”和“快”是方向
  8. 隐藏键盘_三星新专利:带有隐藏键盘的三折叠屏手机
  9. linux c之((void *) - 1)是啥意思
  10. (poj)1064 Cable master 二分+精度
  11. 再见Postman,这款API神器更好用!
  12. Hadoop入门进阶步步高(三-配置Hadoop
  13. Total internal reflection TIR
  14. npm的一些常用命令
  15. hg6201m怎么设置虚拟服务器,移动光猫HG6201M定期重启设置
  16. Android 自定义动态Drawable实现动态指针时钟功能
  17. LBS定位和GPS定位的区别
  18. Python.习题六 字典与集合(上)
  19. 充电宝买哪种比较好?评价最好的充电宝推荐
  20. 华为数通模拟器ensp问题解决方法

热门文章

  1. dingo php,laravel 中安装 Dingo API 基本设置
  2. UVa12304(计算几何中圆的基本操作)
  3. 云原生时代,Kubernetes 让应用落地的 N 种招式(附 PPT)
  4. 路由器输入正确的dns服务器,路由器显示DNS服务器异常怎么解决
  5. 关于柔性显示器工作原理及发展前景的探究
  6. Java实现阿拉伯数字转换成汉字数字
  7. PHP微信公众号登录获取openid信息
  8. [小知识] WPS恢复本地历史数据
  9. Linux平台提取DSDT,ubuntu下提取DSDT SSDT
  10. 202010118——MML命令