在Spring Boot中加载word的文档的时候,加载ftl文档的位置应该是从 target目录下面去加载的(不太确定),不是像大多数情况这样根据类的路径去加载。SpringBoot加载的位置应该是从 “resources”文件下面开始,如果放到“resources”的根目录下面需要加一道“/”斜线。

类似于:

configuration.setClassForTemplateLoading(类名.class,"/ ");

这个时候的类名就与本类没有太大关系了,而是任意的类名即可,都会从这个目录下面去加载文件。

如果是放在该目录下面的static文件下面,就要把目录改成“/static/”即可。后面有“/”没有影响,因为在获取的时候会进行判断。

一端完整的获取配置的代码和文件位置在目录的放置关系。

package com.example.demo;import freemarker.template.Configuration;
import freemarker.template.Template;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.io.*;
import java.util.HashMap;
import java.util.Map;/*** @ClassName: WordBoot* @Author WDF* @Description 测试SpringBoot生成word文档* @Date 2020/9/19 14:04* @Copyright WDF 2020/9/19* @Version 1.0**/
@Controller
@RequestMapping("/word")
public class WordBoot {/*** @return java.lang.String* @Author WDF* @Description 调用接口生成word文档* @Date 2020/9/19 14:57* @Param []**/@RequestMapping("/test")@ResponseBodypublic String outWord() {try {WordBoot.createWord();} catch (Exception e) {e.printStackTrace();System.out.println("文件下载失败");}return "ok";}/*** 生成word文件*/public static void createWord() {String templateName = "testword1.ftl";//word模板名称String filePath = "D:\\freemarker";//文件生成的目标路径,保存word文档的路径String fileName = "Test.doc";//生成的word文件名称try {//创建配置实例Configuration configuration = new Configuration();//设置编码configuration.setDefaultEncoding("utf-8");//ftl模板文件configuration.setClassForTemplateLoading(WordBoot.class, "/static/template/");//获取模板Template template = configuration.getTemplate(templateName);//输出文件File outFile = new File(filePath + File.separator + fileName);//如果输出目标文件夹不存在,则创建if (!outFile.getParentFile().exists()) {outFile.getParentFile().mkdirs();}//将模板和数据模型合并生成文件Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"));Map<String, Object> dataMap1 = new HashMap<String, Object>();getFillData(dataMap1);//生成文件template.process(dataMap1, out);//关闭流out.flush();out.close();} catch (Exception e) {e.printStackTrace();}}private static void getFillData(Map dataMap) {// 根据模板中的参数填充内容,可以不按顺序,参数名称要对上dataMap.put("wordname", "文档标题123");dataMap.put("user", "userName");dataMap.put("password", "12345");dataMap.put("wordDescription", "描述内容");dataMap.put("para", "变量");dataMap.put("type", "类型");dataMap.put("empty", "不可空");}
}

参考:https://blog.csdn.net/qq_40693828/article/details/85138084

SpringBoot 使用freemarker 处理文档,找不到文件位置(报错:basePackagePath=““ /* relatively to resourceLoaderClass pkg)相关推荐

  1. java编译找不到文件_java报错找不到文件解决方法

    刚开始编写java代码时,肯定会遇到各种各样的bug,当然对于初学者这也是能理解的,首先来说一个比较常见的错误,如下: 一般编写新的程序时,都是从Hello,World开始的,比如在DOS上运行jav ...

  2. SpringBoot 自动生成API文档

    SpringBoot 自动生成API文档 在做项目的时候,如果项目是前后分离的,后端一定要和前端或者是移动端对接接口,那么问题来了,接口是不是要自己写给他们看,一般的会采用Excel或者Word来写, ...

  3. php 文档转html格式文件,php学习笔记之将word文档转化为HTML文件

    将word文档转化为HTML文件 function wordTohtml($wfilepath) { $word=new COM("Word.Application") or di ...

  4. 插入顶部_最快速地把同一内容插入到Word文档不同页面的相同位置

    您好,欢迎来到[爆炒Office],这里有原创的实用办公软件技巧. 概述 之前也讨论过把同一内容插入到Word文档不同页面的相同位置,类似于logo,但又可以每一页都自由编辑.现在找到一个更好的方法, ...

  5. word 段显示在页面最下方_最快速地把同一内容插入到Word文档不同页面的相同位置...

    您好,欢迎来到[爆炒Office],这里有原创的实用办公软件技巧. 概述 之前也讨论过把同一内容插入到Word文档不同页面的相同位置,类似于logo,但又可以每一页都自由编辑.现在找到一个更好的方法, ...

  6. Word在试图打开文件时遇到错误。 请尝试下列方法: 检查文档或驱动器的文件权限。 确保有足够的内存和磁盘空间。 用文本恢复转换器打开文件。

    重新装office之后打开系统的文件提示: Word在试图打开文件时遇到错误. 请尝试下列方法: 检查文档或驱动器的文件权限. 确保有足够的内存和磁盘空间. 用文本恢复转换器打开文件. 1.文件安全性 ...

  7. java将office文档,word,ppt,pdf文档转换成swf文件在线预览

    java将office文档pdf文档转换成swf文件在线预览 第一步,安装openoffice.org openoffice.org是一套sun的开源office办公套件,能在widows,linux ...

  8. Wps文档如何转换为pdf文件

    Wps文档是职场办公当中较多使用得文件格式,通常文件的撰写.编辑.修改都是使用得wps工具.因此wps工具操作简易,功能齐全,十分符合日常办公的需求.可是wps文档也有着缺陷所在,那就是wps文档的文 ...

  9. Word文档如何进行压缩文件?

    Word文档可以帮助大家存储很多文字性的信息,同时文档中也可以插入表格及图片等内容,当文档占用的内存比较大不利于传输时,我们可以对文档进行压缩,很多人不知道Word文档如何进行在线压缩,下面这个教程就 ...

  10. 成功解决WIN系统如何更改默认放在C盘的【我的文档】/【图片】位置的存储路径(修改到其它非系统的盘符)

    成功解决WIN系统如何更改默认放在C盘的[我的文档]/[图片]位置的存储路径(修改到其它非系统的盘符) 目录 解决问题 解决思路 解决方法 解决问题 解决WIN系统如何更改默认放在C盘的[我的文档]/ ...

最新文章

  1. AAAI 2020 | 时间可以是二维的吗?基于二维时间图的视频内容片段检测
  2. 网络工程师学Linux 必须掌握命令
  3. 使用FindAncestor查找方式绑定且不需要使用datacontext
  4. python圆柱体,用PYTHON将圆柱体分散到3D XYZ点数据
  5. erlang精要(9)-erl(1)
  6. Value 'EN' violates facet information 'maxlength=1'
  7. Qt中为自己的程序建立一个消息循环
  8. Windows Phone开发(46):与Socket有个约会 转:http://blog.csdn.net/tcjiaan/article/details/7669315...
  9. 计算机网络系统系统设备配置,计算机网络系统技术方案及设备配置方案
  10. Red Hat 6.5 版本虚拟机安装
  11. (28)FPGA计数器设计(软核实现)
  12. NB-IoT终端进网检测介绍
  13. cv2.show()cv2.waitKey()cv2.VideoCapture()的使用
  14. 《算法导论》——矩阵乘法的Strassen算法
  15. 三菱plc软件测试程序com端口,三菱plc编程软件com端口不能保存
  16. 中国科学院计算机研究生面试,19年中科院信工所考研经验分享【初试+复试】
  17. JavaScript入门案例
  18. 如何使用启动盘PE桌面工具安装原版win7系统?
  19. 多用途互联网邮件扩展--MIME类型简介
  20. 游戏评测HTML5网站模板是一款适合游戏视频 游戏评测 游戏介绍网站模板。

热门文章

  1. 汽车软件系统常用简称
  2. python不能使用下标运算的是()_下列选项中,不能使用下标运算的是( ).
  3. 电脑键盘上各个键的作用
  4. python新版个人所得税代码_个人所得税计算代码
  5. linux课程以及Linux主要学习哪些内容
  6. 业务安全之接口调用安全
  7. 判断闰年java_java中判断是否闰年
  8. mybatis sql语句格式化 trim prefix suffix
  9. 如何给程序添加管理员权限(以管理员权限运行功能)
  10. 龙芯 python_在UOS20-龙芯(MIPS64EL)上安装 opencv-python