java ftl模板生成word的demo
时间: 2023-10-07 21:06:15 浏览: 107
以下是一个使用FreeMarker和Apache POI生成Word文档的Java代码示例:
```java
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
public class FtlToWordDemo {
public static void main(String[] args) throws IOException, TemplateException {
// 模板文件名和数据模型
String templateFileName = "template.ftl";
Map<String, Object> dataModel = new HashMap<>();
dataModel.put("title", "测试标题");
dataModel.put("content", "测试内容");
// FreeMarker配置
Configuration configuration = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
configuration.setDefaultEncoding(StandardCharsets.UTF_8.name());
// 加载模板文件
Template template = configuration.getTemplate(templateFileName);
// 生成Word文档
XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("Hello World!");
// 填充模板
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(new File("output.docx")), StandardCharsets.UTF_8);
template.process(dataModel, writer);
writer.close();
}
}
```
在这个示例中,我们使用FreeMarker来加载模板文件,然后将数据模型填充到模板中,最后使用Apache POI来生成Word文档。在实际使用中,你需要根据实际的需求来修改模板和数据模型。
阅读全文