操作步骤
- 创建空白word文档(最好是后缀是doc的)
- 根据需求在word里先把ftl命令写好(目的:导出的xml可以少编辑些)
- 把word另存为xml文件(最好是word 2003 xml)
- 把导出来的xml进行格式化(比如使用visual studio的xml插件)
- 把xml后缀改为ftl,拷贝到开发工程里
ftl指令可参考freemarker中文地址
- 配置freemarker库
<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
注意事项
- 若是用到了java bean记得实现get、set方法)
- 图片的话记得处理wordml的name、src,以及style的width、height
常见格式处理
1.文本
ftl举例
${title}
java代码对应举例
Map<String, Object> map = new HashMap<>()
map.put("title", "演示");
2.日期
ftl举例
${date}
java代码对应举例
Map<String, Object> map = new HashMap<>()
map.put("date", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
3.布尔
ftl举例
<#if isBool>是<#else> 否</#if>
java代码对应举例
Map<String, Object> map = new HashMap<>()
map.put("isBool", false);
4.序列
ftl举例
<#if fruits?? && fruits?size !=0 >
<#list fruits as fruit>
……
${fruit}</w:t>
……
</#list>
<#else >
没有数据
</#if>
java代码对应举例
Map<String, Object> map = new HashMap<>()
List<String> fruits = new ArrayList<>();
fruits.add("橙子");
fruits.add("苹果");
fruits.add("香蕉");
fruits.add("橘子");
fruits.add("桃子");
map.put("fruits", fruits);
5.集合
ftl举例
<#if users?? && users?size !=0 >
<#list users as user>
……
${user.name}
……
${user.age}
……
<#if user.graduated>是<#else> 否</#if>
……
</#list>
</#if>
java代码对应举例
Map<String, Object> map = new HashMap<>()
List<UserInfo> lists = new ArrayList<>();
lists.add(new UserInfo(11, "whz1", false));
lists.add(new UserInfo(12, "whz2", true));
lists.add(new UserInfo(13, "whz3", false));
lists.add(new UserInfo(14, "whz4", true));
lists.add(new UserInfo(15, "whz5", true));
map.put("users", lists);
6.图片
ftl举例
<#if images?? && images?size !=0 >
<#list images as img>
……
图片名称:${img.name}.png
……
<w:binData w:name="${"wordml://"+img.name+".jpg"}" xml:space="preserve">${img.data}</w:binData>
<v:shape id="图片 1" …… style="width:${img.width}pt;height:${img.height}pt">
<v:imagedata src="${"wordml://"+img.name+".jpg"}" o:title=""/>
……
</#list>
</#if>
java代码对应举例
Map<String, Object> map = new HashMap<>()
map.put("images", WordUtil.getInstance().getFakeImages());
示例代码说明
- 示例代码
- IntelliJ idea导入,选择maven工程
-
run启动服务
image.png
若run按钮灰色,可找到FtlApplication.java,点击左侧按钮run下就有了 image.png
-
浏览器输入:localhost:8080
image.png
备注:导出word有两种方式,1是通过浏览器下载;2是保存到某路径下
网友评论