springboot+freemarker导出word

操作步骤

  1. 创建空白word文档(最好是后缀是doc的)
  2. 根据需求在word里先把ftl命令写好(目的:导出的xml可以少编辑些)
  3. 把word另存为xml文件(最好是word 2003 xml)
  4. 把导出来的xml进行格式化(比如使用visual studio的xml插件)
  5. 把xml后缀改为ftl,拷贝到开发工程里

ftl指令可参考freemarker中文地址

  1. 配置freemarker库


      org.freemarker
      freemarker
      2.3.30

注意事项

  1. 若是用到了java bean记得实现get、set方法)
  2. 图片的话记得处理wordml的name、src,以及style的width、height

常见格式处理

1.文本

ftl举例

${title}

java代码对应举例

Map map = new HashMap<>()
map.put("title", "演示");

2.日期

ftl举例

${date}

java代码对应举例

Map map = new HashMap<>()
map.put("date", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));

3.布尔

ftl举例

<#if isBool>是<#else> 否

java代码对应举例

Map map = new HashMap<>()
map.put("isBool", false);

4.序列

ftl举例

<#if fruits?? && fruits?size !=0 >
     <#list fruits as fruit>
      ……
      ${fruit}
      ……
      
<#else >
      没有数据

java代码对应举例

Map map = new HashMap<>()
List 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> 否
     ……
     

java代码对应举例

Map map = new HashMap<>()
List 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
     ……
     ${img.data}
     
     
     ……
     

java代码对应举例

Map map = new HashMap<>()
map.put("images", WordUtil.getInstance().getFakeImages());

示例代码说明

  1. 示例代码
  2. IntelliJ idea导入,选择maven工程
  3. run启动服务


    image.png

若run按钮灰色,可找到FtlApplication.java,点击左侧按钮run下就有了
image.png
  1. 浏览器输入:localhost:8080


    image.png

备注:导出word有两种方式,1是通过浏览器下载;2是保存到某路径下

你可能感兴趣的:(springboot+freemarker导出word)