Velocity模板引擎实战:动态生成HTML、Word、Excel等报表
上篇文章介绍了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等报表相关推荐
- 使用 Velocity 模板引擎快速生成代码
Velocity 模板引擎介绍 在现今的软件开发过程中,软件开发人员将更多的精力投入在了重复的相似劳动中.特别是在如今特别流行的 MVC 架构模式中,软件各个层次的功能更加独立,同时代码的相似度也更加 ...
- 工具集核心教程 | 第五篇: 利用Velocity模板引擎生成模板代码
前言 不知道大家有没有这样的感觉,在平时开发中,经常有很多dao.service类中存着很多重复的代码,Velocity提供了模板生成工具,今天我教大家怎么和这些大量的重复代码说再见. 参考项目:ht ...
- Java读取word模板,并动态生成word
Java读取word模板,并动态生成word 最近有个需求是将数据库里存入的用户个人信息生成一个word然后供用户下载,第一时间就就想到了poi来做,所以记录一下免得自己忘了,忘了也可以回来看看
- velocity模板引擎帮助
Velocity用户手册是帮助页面设计者和内容提供者认识Velocity和其简单而功能强大的脚本语言――Velocity模板语言(VTL).在手册上的许多例子,都是用Velocity插入动态的内容到网 ...
- velocity模板引擎-vm语法整理
velocity模板引擎-vm语法整理 模板引擎我目前接触过两次, 第一次是在前后端还未分离时,考虑到部分页面数据比较固定,一定时间内不会变动,这样每次从后台加载数据渲染页面明显会消耗性能以及资源浪费 ...
- java 复杂word_Java 动态生成复杂 Word
Java 动态生成复杂 Word 阅读目录 1. 制作 Word 模版,将你需要动态生成的字段用${}替换. 2. 将 Word文档保存为 xml . 3. 引入项目. 项目中需要用 java 程序生 ...
- html转义成velocity,改造Velocity模板引擎让$[!]{}输出默认进行html转义,并增加$#{}语法支持不转义输出...
一直以来在项目中使用Apache Velocity模板引擎作为视图层输出,为了解决XSS漏洞,需要对输出到页面的内容进行HTML转义,我一般采用2种方式实现: 使用过滤器 Filter,在其中进行 H ...
- Velocity模板引擎实现通用导出
Velocity模板引擎实现通用导出 基础配置 在数据库中配置导出sql模板,导出文件名,sheet名,字段对应中文名等.表结构如下 CREATE TABLE `finance_download_co ...
- Java读取pdf模板,并动态生成pdf文件,如动态生成准考证
Java读取pdf模板,并动态生成pdf文件,如动态生成准考证 前几天遇到了一个生成准考证的需求,并提供用户下载,然后百度了一圈还是觉得使用itextpdf这个框架好用点.但是还需要找到一个能创建 ...
最新文章
- 异步fifo with 读控制
- shell变量,管道符,作业控制,shell变量,以及变量配置文件
- c++ 基本排序算法学习
- CentOS6.5 搭建 LNMP (linux + nginx + mysql + php)
- 跟我学《JavaScript高程3》第一讲,视频课程,课程笔记
- Node.js学习准备篇
- 数据同步Sqoop用法之mysql与Hive导入导出
- DOM事件学习之兼容中文输入法
- HttpClilent整合Spring使用【配置和代码】
- 第二届全球区块链峰会随记
- WPA-PSK无线网络破解原理与过程
- vue-bilibili学习笔记
- 39《黑客与画家 : 硅谷创业之父Paul Graham文集》 -豆瓣评分8.8
- 两代荣耀Magic历史性同框,荣耀Magic 2如何践行科技理想主义?
- [交易日记]2016-11-24交易笔记
- Market1501数据集下载
- 给一段下雪的代码。。。
- C1小笔记【任务训练篇三】
- picpick尺子像素大小精度不够准确_光栅尺精度与分辨率有什么关系吗?
- OLA音频变速算法的仿真与剖析