action通过VM生成文件并导出

本文介绍如何利用Java模板引擎VelocityEngine结合HTTP请求和响应处理,将动态数据填充到预设的模板中,并生成指定格式的Word文档。文中详细展示了设置文件资源加载路径、初始化引擎参数、创建上下文及参数映射、获取模板并完成文档渲染输出的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//引擎
VelocityEngine ve = new VelocityEngine();
Properties props = new Properties();        
props.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, this.httpRequest.getSession().getServletContext().getRealPath("/") + "templates");
		
ve.init(props);
		
Map<String, Object> param = new HashMap<String, Object>();
param.put("currentYear", reportDate.substring(0, 4));

VelocityContext context = new VelocityContext();
context.put("param", param);
		
Template template = ve.getTemplate("monthSafeReport.vm","UTF-8");		
try 
{
    this.httpResponse.setContentType("application/vnd.ms-word;charset=UTF-8");
    this.httpResponse.setHeader("Content-Disposition", "attachment;filename=\""
			+ URLEncoder.encode("测试.doc", "UTF-8")
			+ "\"");
    OutputStream out = this.httpResponse.getOutputStream(); 
    Writer write = new OutputStreamWriter(out,"UTF-8");
    
    //转换输出
    template.merge(context, write);
    
    template.process();
    
    out.flush();
    write.flush();
    out.close();
    write.close();
} 
catch (Exception e) 
{
    e.printStackTrace();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值