poi读取word文档时显示Package should contain a content type part [M1.13] 还有路径为空等错误


项目需求是 从服务器端下载一个word文档,使用的是poi。(关于poi导word的分享真的好少哇,这个需求真的卡了我好几天,太痛苦了!)

本地测试没问题之后,我就放到了服务器上,结果就开始了漫长的报错之路(哭)

  1. 如果你们也遇到了下图这个错误的话,请排查两个地方:

               存储在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>

     这些都是我踩坑的地方,所以写下来也希望能避免你们不要踩坑了!!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM