SpringBoot下使用FreeMarker导出world,下载功能

SpringBoot下使用FreeMarker导出world,下载功能

Java中导出World文档,最早之前使用的是POI,由于比较繁琐,这次改用FreeMarker模板来进行操作,比较方便。 直奔主题吧

1.准备要导出的模板文档在这里插入图片描述
2.将其另存为xml格式

在这里插入图片描述

3.将该xml文件后缀改成.ftl,然后拷贝到项目中

进行格式化之后就是这个样子
在这里插入图片描述

4.编写工具类

首先在添加FreeMarker的jar包依赖、

<!--引入freemarker 模板依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

工具类 WorldUtil.java

import freemarker.template.Configuration;
import freemarker.template.Template;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.OutputStreamWriter;
import java.net.URLEncoder;
import java.util.Map;

/**
 * world工具类
 *
 * @author cheny
 * @version 1.0
 * @create 2019-02-13 17:13
 **/
public class WorldUtil {

    /**
     * 导出world
     * @param dataMap 数据集
     * @param templateName 模板名称
     * @param filePath 模板路径
     * @param fileName 文件名
     * @param response 
     */
    public static void exportDoc(Map dataMap, String templateName, String filePath, String fileName, HttpServletResponse response){
        try {
            Configuration configuration = new Configuration();
            configuration.setDefaultEncoding("UTF-8");
            //设置模板所在文件夹
            configuration.setDirectoryForTemplateLoading(new File(filePath));
            //获取模板
            Template template = configuration.getTemplate(templateName);
            // 告诉浏览器用什么软件可以打开此文件
            response.setHeader("Content-disposition",
                    "attachment;filename=" + URLEncoder.encode(fileName + ".doc", "UTF-8"));
            response.setContentType("application/msword");// 定义输出类型
            template.process(dataMap, new OutputStreamWriter(response.getOutputStream()));
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

5.测试

在这里插入图片描述

下载结果如图:
在这里插入图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值