项目需求是 从服务器端下载一个word文档,使用的是poi。(关于poi导word的分享真的好少哇,这个需求真的卡了我好几天,太痛苦了!)
本地测试没问题之后,我就放到了服务器上,结果就开始了漫长的报错之路(哭)
-
如果你们也遇到了下图这个错误的话,请排查两个地方:
存储在linux上的文档后缀名一定要是 .docx ! 如果是 .doc 会报错。
HWPFDocument 支持的是 .doc XWPFDocument 支持的是 .docx
所以一定不要搞混!!
2. 还有一个会出现错误的地方,获取不到服务器端的文件路径,会报空指针或者是所写路径找不到 (大概就是这个意思,报错信息我忘记截图了)
错误原因:使用这种方法只能获取自己本地下面的文件,我是把文件放在了idea的resource下面了。 但是要是用这个获取服务器端的会报NullException!
String path = this.getClass().getClassLoader().getResource("./templates/report.docx").getPath();
正确写法:第一种可以直接写linux中的文件路径即可;第二种我搜的说也可以,但是我还没测试过。
String url = "/usr/report.docx"; 或者 URL url = getClass().getClassLoader().getResource("存储路径");
3.最后附一下我导入的poi 依赖,poi版本低是因为还有个easypoi 的依赖,如果poi版本太高也会导致跟easypoi发生冲突报错,所以百度之后说还是要用3.17版本的
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
这些都是我踩坑的地方,所以写下来也希望能避免你们不要踩坑了!!