freemarker生成word或excel的案例,下面是word案例

作用

访问该接口后直接将 .ftl转为word并下载下来

代码

    @GetMapping("/handRmFile")
    public void handRmFile(HttpServletResponse response,String mark,Long id) throws Exception {
        Map<String,Object>  map = new HashMap<>(); //需要将这里面的数据存储到word
        map.put("filed1","value");
        map.put("filed2",new ArrayList<Object>());

           // 创建临时文件夹,并创建word文档-----默认在win或linux创建
        String tempDir = System.getProperty("java.io.tmpdir");
        File docFile = new File(tempDir + File.separator + new Date().getTime() +".doc"); 
        if (!docFile .exists()) {
            if (!docFile .getParentFile().exists()) {
                docFile .getParentFile().mkdirs();
            }
            docFile .createNewFile();
        }

        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename))); //将word文件转为输出流


         //获取根据.ftl文件获取Template 实例
         Configuration configuration = new Configuration(Configuration.VERSION_2_3_31);
        configuration.setDefaultEncoding("UTF-8");
        configuration.setClassForTemplateLoading(this.getClass(), ".ftl文件名所在路径");
        Template template = configuration.getTemplate("文件名.ftl");
   
        //将map数据输出到.ftl文件后》将.ftl转为word写入到writer中
        //并将writer关闭
        template.process(map, writer); 
          
         //浏览器下载
         // 设置强制下载不打开
         response.reset();
         response.setContentType("application/msword; charset=utf-8");
         response.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode("新的文件名,后缀由写入到out中的流定", "UTF-8"));
         OutputStream out = response.getOutputStream();
         FileUtils.copyFile(docFile, out); //将docFile文件写入out 中就完成了下载
         out.flush();
         out.close();//关闭流
          
         // 清除生成的临时文件
         FileUtils.forceDelete(docFile);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值