當前位置:編程學習大全網 - 源碼下載 - Maven打包源代碼

Maven打包源代碼

最近在使用Apache poi導出excel時,遇到了以下問題:

壹開始對比其他web項目,沒有找到解決方案。最後,找到引發該異常的源代碼:

org . Apache . poi . ss . user model . workbook factory . create(workbook factory . Java:75)

可見調用WorkbookFactory時。Create (InputStream)創建工作簿,將根據文件類型(文件頭)區分並創建適當的工作簿對象。如果hasPOIFSHeader()方法中的前兩個If條件不滿足,就會拋出壹個異常。兩個if中的hasPOIFSHeader()方法是針對Excel2003和Excel2007的判斷,讀取文件流中的文件頭(byte[8])信息進行判斷。

那麽,既然是通過比較文件的表頭信息來判斷的,而且excel只有2003和2007兩個版本,那麽為什麽在讀取放置在classpath下的excel模板並創建為工作簿時,文件的表頭判斷不匹配呢?

最後找到了原因:maven在編譯打包的時候轉碼了resources下的資源文件。最終web項目打印出來的jar/war包,裏面歸檔的excel模板文件都是亂碼,文件頭信息被修改,導致poi根本無法識別這樣的excel文件。

將maven資源插件添加到項目的pom.xml中。

1.建議使用工作簿工廠。在poi-ooxml中創建(InputStream)來創建工作簿,因為HSSFWorkbook和XSSFWorkbook都實現了工作簿接口。(此處通過文件頭改編Excel2003和Excel2007。)

2.在妳的項目中,需要放壹些靜態的資源文件作為模板,比如excel填表模板、word模板(裏面有壹些固定的樣式,程序運行時報表類是通過模板導出的)。這時候最好配置maven去掉資源文件不轉碼。下面有兩種鏈接方式。

Maven打包和過濾資源文件

/Qing _ mei _ xiu/文章/詳情/80661216

  • 上一篇:往日不再僵屍最多在哪個地方
  • 下一篇:微信公眾帳號該怎樣運營方案
  • copyright 2024編程學習大全網