本文已参与「新人创作礼」活动,一起开启掘金创作之路。
有一个需求 就是把查出来的数据给放到一个word文档里 ,而怎么实现呢 我查阅了许多资料 发现了一个比较简单和方便的方法 写一个小demo出来
首先这个项目是用了freemarker依赖来实现,首先先做准备工作 先创建一个项目来导入依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
然后还需要一个ftl文件
是不是看着比较头疼 其实这个文件是通过word文档转化出来的,我们先设计好或者找到需要的文档
然后把我们想要取代数据的位置给用这种格式取代{peopleid}取代
这样我们就可以把数据给到三打哈之前的位置了
而我们怎么得到我们想要的ftl模板文件呢 这就很简单了 我们直接修改我们修改过的文档的后缀名 让它类型为ftl
这样就得到一个ftl文件了
然后怎么使用这个东西呢 我们需要创建一个工具类 来对文档进行赋值并生成字节流去导出
首先是对文档进行赋值,参数有我们需要赋值的数据和模板文件
private static File createDoc(Map<?, ?> dataMap, Template template) {
String name = "sellPlan.doc";
File f = new File(name);
Template t = template;
try {
// 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开
Writer w = new OutputStreamWriter(new FileOutputStream(f), "utf-8");
t.process(dataMap, w);
w.close();
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
return f;
}
而下一步是使用上面的代码生成导出字节流
具体 请看下一篇文章