freemarker 生成word
2024-09-05 02:59:55
一、生成模板,动态获取的部分用${变量名},然后将word另存为xml文件,再将后缀名改成ftl格式。然后将模板放在对应的目录下。
二、引入freemarker包,mawen引用
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
三、代码实现
@ApiOperation(value = "word", httpMethod = "GET")
@RequestMapping(value = "/word", method = RequestMethod.GET)
@Transactional
public void getWord(HttpServletResponse response)
{
try {
Map<String,Object> dataMap = new HashMap<String,Object>();
dataMap.put("id", 123456);
dataMap.put("code", "张三");
dataMap.put("name", "123123");
Configuration configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
//指定模板路径的第二种方式,我的路径是D:/ 还有其他方式
configuration.setDirectoryForTemplateLoading(new File("D:/"));//这里对应模板的物理路径 // 输出文档路径及名称
// File outFile = new File("D:/test.doc");
//以utf-8的编码读取ftl文件
Template t = configuration.getTemplate("模板1.ftl","utf-8");
response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode("适得府君书的", "UTF-8") + ".doc");
// Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"),10240);
Writer out = null;
out = new BufferedWriter(new OutputStreamWriter(response.getOutputStream()));
t.process(dataMap, out);
out.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
我生成的模板:
word导出的结果:
对应map中的三个值。
最新文章
- 常用数据结构-线性表及Java 动态数组 深究
- 谁说JavaScript容易?
- Android开发探秘之一:创建可以点击的Button
- Silverlight C#动态设置样式
- nodejs ssh2
- You Need This One Skill to Succeed in IT--reference
- bzoj 3781: 小B的询问 分块
- fmt:formatDate标签的输出格式
- perl学习(8) 控制:unless,until,next,redo,last
- CentOS 6.3 安装 samba 共享(转)
- java-信息安全(七)-基于非对称加密,对称加密等理解HTTPS
- nginx配置静态项目
- 如何清除Windows10中的恢复分区
- 使用Linux的环境变量
- 1.TabActivity、视图树、动画
- python sort、sorted高级排序技巧
- 阿里云 CentOS安装Git
- #JS 获取屏幕分辨率、网页可见区域等
- [转] Entity Framework 无法加载指定的元数据资源。
- c++11 继承构造