上篇文章介绍了Velocity的基本用法,文章链接:Java使用 VelocityEngine模板引擎快速生成HTML等各种代码
本篇文章主要针对Velocity的实际应用

先来一个工具类

package utils;  import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Properties;  import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.runtime.RuntimeConstants;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;/*** 用于解析vm模版(world文档保存为xml格式,然后把里面的值改为velocity变量) * 注意:解析excel的xml模版时* 必须把<NumberFormat ss:Format="_ * #,##0_ ;_ * \-#,##0_ ;_ * "-"_ ;_ @_ "/> 删掉* 否则velocity处理模版后,导出的xls会出现内容空白问题 * @author: <a href="mailto:wb-lzl282164@alibaba-inc.com">李智龙</a>* @date: 2018/3/28*/
public class VelocityUtil {private static VelocityEngine ve;static {ve = new VelocityEngine();ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());ve.init();}public static VelocityEngine getVe() {return ve;}
} 

再来一个通用测试类

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.runtime.RuntimeConstants;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
import utils.VelocityUtil;import java.io.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/*** @author: <a href="mailto:wb-lzl282164@alibaba-inc.com">李智龙</a>* @date: 2018/3/28*/
public class HelloVelocity {public static void main(String[] args) throws IOException {VelocityEngine ve = VelocityUtil.getVe();// 载入(获取)模板对象Template t = ve.getTemplate("wordTemp01.xml");VelocityContext ctx = new VelocityContext();// 域对象加入参数值ctx.put("name", "李智龙");ctx.put("age", "");ctx.put("date", (new Date()).toString());// list集合List temp = new ArrayList();temp.add("1");temp.add("2");ctx.put("list", temp);File file = new File("export.doc");StringWriter sw = new StringWriter();t.merge(ctx, sw);InputStream inputStream = new ByteArrayInputStream(sw.toString().getBytes("UTF-8"));inputstreamtofile(inputStream, file);System.out.println(sw.toString());}public static void inputstreamtofile(InputStream ins, File file){try {OutputStream os = new FileOutputStream(file);int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {os.write(buffer, 0, bytesRead);}os.close();ins.close();} catch (IOException e) {e.printStackTrace();}}
}

一、HTML导出

参考上篇文章,就是和文本模板一样的道理
Java使用 VelocityEngine模板引擎快速生成HTML等各种代码

二、Word导出

1、新建一个Word(wordTemp.doc),注意圈红的部分

2、另存为xml文件,使用浏览器打开,注意上图标红的两串代码位置不对
3、修改xml后的内容,对篮框内的整体进行循环

4、改完后再次打开模板会发现,红框中的内容隐藏了

5、替换通用测试类中的模板,执行代码
6、效果

三、Excel导出

和world一样保存为xml格式,唯一的区别是,Excel需要把

<NumberFormat ss:Format="_ * #,##0_ ;_ * \-#,##0_ ;_ * "-"_ ;_ @_ "/>

这行干掉(不止一行),否则导出来的是空白

Velocity模板引擎实战:动态生成HTML、Word、Excel等报表相关推荐

  1. 使用 Velocity 模板引擎快速生成代码

    Velocity 模板引擎介绍 在现今的软件开发过程中,软件开发人员将更多的精力投入在了重复的相似劳动中.特别是在如今特别流行的 MVC 架构模式中,软件各个层次的功能更加独立,同时代码的相似度也更加 ...

  2. 工具集核心教程 | 第五篇: 利用Velocity模板引擎生成模板代码

    前言 不知道大家有没有这样的感觉,在平时开发中,经常有很多dao.service类中存着很多重复的代码,Velocity提供了模板生成工具,今天我教大家怎么和这些大量的重复代码说再见. 参考项目:ht ...

  3. Java读取word模板,并动态生成word

    Java读取word模板,并动态生成word ​ 最近有个需求是将数据库里存入的用户个人信息生成一个word然后供用户下载,第一时间就就想到了poi来做,所以记录一下免得自己忘了,忘了也可以回来看看

  4. velocity模板引擎帮助

    Velocity用户手册是帮助页面设计者和内容提供者认识Velocity和其简单而功能强大的脚本语言――Velocity模板语言(VTL).在手册上的许多例子,都是用Velocity插入动态的内容到网 ...

  5. velocity模板引擎-vm语法整理

    velocity模板引擎-vm语法整理 模板引擎我目前接触过两次, 第一次是在前后端还未分离时,考虑到部分页面数据比较固定,一定时间内不会变动,这样每次从后台加载数据渲染页面明显会消耗性能以及资源浪费 ...

  6. java 复杂word_Java 动态生成复杂 Word

    Java 动态生成复杂 Word 阅读目录 1. 制作 Word 模版,将你需要动态生成的字段用${}替换. 2. 将 Word文档保存为 xml . 3. 引入项目. 项目中需要用 java 程序生 ...

  7. html转义成velocity,改造Velocity模板引擎让$[!]{}输出默认进行html转义,并增加$#{}语法支持不转义输出...

    一直以来在项目中使用Apache Velocity模板引擎作为视图层输出,为了解决XSS漏洞,需要对输出到页面的内容进行HTML转义,我一般采用2种方式实现: 使用过滤器 Filter,在其中进行 H ...

  8. Velocity模板引擎实现通用导出

    Velocity模板引擎实现通用导出 基础配置 在数据库中配置导出sql模板,导出文件名,sheet名,字段对应中文名等.表结构如下 CREATE TABLE `finance_download_co ...

  9. Java读取pdf模板,并动态生成pdf文件,如动态生成准考证

    Java读取pdf模板,并动态生成pdf文件,如动态生成准考证 ​ 前几天遇到了一个生成准考证的需求,并提供用户下载,然后百度了一圈还是觉得使用itextpdf这个框架好用点.但是还需要找到一个能创建 ...

最新文章

  1. 异步fifo with 读控制
  2. shell变量,管道符,作业控制,shell变量,以及变量配置文件
  3. c++ 基本排序算法学习
  4. CentOS6.5 搭建 LNMP (linux + nginx + mysql + php)
  5. 跟我学《JavaScript高程3》第一讲,视频课程,课程笔记
  6. Node.js学习准备篇
  7. 数据同步Sqoop用法之mysql与Hive导入导出
  8. DOM事件学习之兼容中文输入法
  9. HttpClilent整合Spring使用【配置和代码】
  10. 第二届全球区块链峰会随记
  11. WPA-PSK无线网络破解原理与过程
  12. vue-bilibili学习笔记
  13. 39《黑客与画家 : 硅谷创业之父Paul Graham文集》 -豆瓣评分8.8
  14. 两代荣耀Magic历史性同框,荣耀Magic 2如何践行科技理想主义?
  15. [交易日记]2016-11-24交易笔记
  16. Market1501数据集下载
  17. 给一段下雪的代码。。。
  18. C1小笔记【任务训练篇三】
  19. picpick尺子像素大小精度不够准确_光栅尺精度与分辨率有什么关系吗?
  20. OLA音频变速算法的仿真与剖析

热门文章

  1. 更换镜像源解决unable to locate package
  2. 简单述三消游戏逻辑:
  3. java文件名加时间戳_Java处理文件名加时间戳
  4. openfire源码环境搭建
  5. TensorFlow 2——导数和微分
  6. 为何浏览器访问部署沃通EV SSL证书网站时无法显示绿色地址栏?
  7. 虚拟机VMware下载与安装
  8. ST-GCN论文简读以及复现
  9. 代糖警告!「无糖0卡」照样能引起高血糖,影响人体代谢机制 | Cell
  10. Hive基础之基础查询