office本来不是很难,关键就是经验吧,直入主题。
文档结构图设置了四级,但是目录始终只显示三级,郁闷了好久,网上看的也不靠谱,方法如下:
引用-目录-插入目录
弹出插入目录设置后,修改级别为最大,可以看出最大为九级目录,可以满足需要了,注意选择为9,1-9的都可以显示,
9以上的就无法显示了,当然文档结构里面也没有9级以上的一般。
今天,在生成目录时,只显示了前 3级目录,第四级目录无法显示:
解决办法:
一:
视图-大纲视图,将光标放在你要设置的四级目录内容那一行,在‘正文文本’处选择‘4级’,设置完后,圆点变成了带加号的圆点,保存。
二:
引用-目录下面的下三角-插入目录-‘显示级别’改为4,确定。
三:然后就看到四级目录了。
office本来不是很难,关键就是经验吧,直入主题。
文档结构图设置了四级,但是目录始终只显示三级,郁闷了好久,网上看的也不靠谱,方法如下:
引用-目录-插入目录
弹出插入目录设置后,修改级别为最大,可以看出最大为九级目录,可以满足需要了,注意选择为9,1-9的都可以显示,
9以上的就无法显示了,当然文档结构里面也没有9级以上的一般。
把C:\Users\administrator\AppData\Roaming\Microsoft\Templates\Normal.dotm拷贝到另一台电脑下相应的目录即可。
把C:\Users\lcw\AppData\Roaming\Microsoft文档全部复制过去就可以了,亲测可用。
最近碰到个问题,就是项目打包成jar包运行无法访问resources里的资源。jar包运行时引用的第三方jar包也无法加载。
就是我需要实现一个导出成pdf或者word文档的功能,导出这两种文档是根据模板来导出。先准备好了pdf和word的模板,导出时将数据内容填充到模板中,然后再将填写好内容的pdf或word文档下载下来。
这两种模板我是放在 resources 目录下 template 文件夹里
读取模板时,我是用 ClassLoader.getSystemResource(“template”).getPath() 来读取的,具体代码如下:/** * @param dataMap 导出数据 * @param templateName 模板名称 * @param path 导出word的路径以及文件名称 * 通过模板导出word格式文件 * */ public static void exportWord(Map<String,Object> dataMap,String templateName,String path) throws IOException, TemplateException { //Configuration 用于读取ftl文件 Configuration configuration = new Configuration(new Version("2.3.0")); configuration.setDefaultEncoding("utf-8"); /** * 以下是两种指定ftl文件所在目录路径的方式,注意这两种方式都是 * 指定ftl文件所在目录的路径,而不是ftl文件的路径 */ configuration.setDirectoryForTemplateLoading(new File(ClassLoader.getSystemResource("template").getPath())); System.out.println("模板路径=====>>>>>>>>>>>"+new File(ClassLoader.getSystemResource("template").getPath())); //输出文档路径及名称 File outFile = new File(path); //以utf-8的编码读取ftl文件 Template template = configuration.getTemplate(templateName, "utf-8"); Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"), 10240); template.process(dataMap, out); out.close(); }
以上代码读取模板,在本地运行的时候是没有问题,但是把这个项目打包成jar包后,部署到服务器运行,导出word或pdf文件的时候,就报错了,看错误信息,是 configuration.setDirectoryForTemplateLoading(new File(ClassLoader.getSystemResource(“template”).getPath())); 这一句报错了。
其实就是 ClassLoader.getSystemResource(“template”).getPath() 这里获取模板路径的时候没有获取到,为null,所以报错了,然后我换了种方法获取路径,根据某个类的相对路径来获取:
//这里要注意前面要加“/”,即"/template",如果直接用 "template" 也是获取不到的 configuration.setClassForTemplateLoading(this.getClass(),"/template");
改好之后果然可以了,然鹅并没结束,这里我导出word是没问题了,可是我导出pdf还是有问题。
因为我这里导出成pdf是先将数据填写到word模板中,然后再将这个模板转为pdf进行下载。
word转pdf就用到了一个第三方jar包,aspose-words-15.8.0.jar
用这个jar包,将word转为pdf,在pom.xml中需要配置:<!--引入word转pdf jar包--> <dependency> <groupId>aspose</groupId> <artifactId>words</artifactId> <version>15.8.0</version> <scope>system</scope> <systemPath>${project.basedir}/jar/aspose-words-15.8.0.jar</systemPath> </dependency>
这样在本地运行是没有问题的,但是打包成jar运行就不行,后面找了半天终于找到解决办法,在pom.xml打包成jar的配置中,加上 < includeSystemScope>true</ includeSystemScope> 这句即可:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin>
这样就大功告成,打包jar,运行,导出word和pdf都没问题。
关于引用的第三方jar包,其实也可以将第三方jar包导入到本地的maven仓库,在pom里引入的时候,像引入其他依赖一样就可以了,在将项目打包成jar包的时候,pom里面也不用配置 < includeSystemScope>true</ includeSystemScope> 了