1、应用场景
Thread.currentThread().getContextClassLoader().getResourceAsStream 使用来导出Excel ,但是总是报空指针异常,发现是文件没有读取到!
2、读取文件的方式
方式一:
ClassPathResource classPathResource = new ClassPathResource("template/xx.xlsx");
InputStream inputStream = classPathResource.getInputStream();
方式二:
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/xxx.xlsx");
方式三:
nputStream inputStream = this.getClass().getResourceAsStream("template/xxxx.xlsx");
pom文件中设置
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xlsx</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xlsx</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
3、顺便解释一下
1、include可以配置多个路径,但路径不要重复,也别包含
2、*与**/*意义不同,*指resource路径下,并不包含resource子文件夹下的文件
**/*指resource路径及其子路径下所有文件
3、 .xls 是 Excel 1997-2003 版本的格式;.xlsx 是 Excel 2007 版本的格式
.xls 是二进制的复合文档类型的结构;.xlsx 是用新的基于XML的压缩文件格式,使其占用空间更小,运算速度 也会快一点,xlsx 中最后一个 x 的意义就在于此。
.xls 格式的文件所有 Office 程序都能打开,但.xlsx只有 Office 2007 或者更新的版本才能打开