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