alibaba-easyexcel ExcelGenerateException: 異常問題


異常信息:

Exception in thread "main" com.alibaba.excel.exception.ExcelGenerateException: java.lang.AbstractMethodError: 
Method org/apache/poi/xssf/streaming/SXSSFSheet.addMergedRegionUnsafe(Lorg/apache/poi/ss/util/CellRangeAddress;)I is abstract at com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:67) at com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:161) at com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:146) at com.guoll.modules.utils.easyexcel.write.factory.CustomWriteFactory.write(CustomWriteFactory.java:147) at com.guoll.modules.utils.easyexcel.EasyExcelBase.core(EasyExcelBase.java:65) at com.guoll.modules.utils.easyexcel.EasyExcelBase.main(EasyExcelBase.java:53) Caused by: java.lang.AbstractMethodError: Method org/apache/poi/xssf/streaming/SXSSFSheet.addMergedRegionUnsafe(Lorg/apache/poi/ss/util/CellRangeAddress;)I is abstract at org.apache.poi.xssf.streaming.SXSSFSheet.addMergedRegionUnsafe(SXSSFSheet.java) at com.alibaba.excel.context.WriteContextImpl.addMergedRegionToCurrentSheet(WriteContextImpl.java:188) at com.alibaba.excel.context.WriteContextImpl.initHead(WriteContextImpl.java:173) at com.alibaba.excel.context.WriteContextImpl.initSheet(WriteContextImpl.java:161) at com.alibaba.excel.context.WriteContextImpl.currentSheet(WriteContextImpl.java:131) at com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:56) ... 5 more

產生原因:

 @ExcelProperty value 字段 存在 多個
在這個版本中
BaseRowModel 已經被定義成了失效,所以我並沒在 mode 中 繼承它。但是這樣使用下面的這些注解 是沒有問題。意思就是 我只要將 value 只給定一個參數,是沒有問題。
@Data
@ContentRowHeight(34)
@HeadRowHeight(34)
public class CaseTempMode{
    @ColumnWidth(13)
    @ExcelProperty(value = {"模塊","模塊一"}, index = 0)
    private String model1 ;
    @ColumnWidth(13)
    @ExcelProperty(value = {"模塊二"}, index = 1)
    private String model2;
    ....
    ....
}    

版本信息:

  該版本是目前我使用時最新的版本,百度上的案例基本上都是 1.x 的,我能遇到這個問題,很有可能與版本有關系。該框架開發團隊應該優化過,若要開啟復雜表頭,可能需要配置一些東西。

 <dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>easyexcel</artifactId>
  <version>2.1.4</version>
</dependency>

解決方案:

 替換 apache.poi 的版本 為該  easyexcel pom.xml 中版本(這句話優點繞,我都這么覺得)

 首先我們在maven 中 找到  該項目的 easyexcel 的pom.xml

 

 

 

 我發現 阿里 用的版本已經是 3.17 的了,最開始項目並不是 用的  easyexcel  而就是用的 apache.poi  在我項目中 該apache.poi 版本 是 3.14  所以就報了這個錯。

讓我注意到這一點的 是這段異常。

Caused by: java.lang.AbstractMethodError: Method org/apache/poi/xssf/streaming/SXSSFSheet.addMergedRegionUnsafe(Lorg/apache/poi/ss/util/CellRangeAddress;)I is abstract

最后 我將項目的中 apache.poi 版本升級到了 3.17 也就解決了這個問題。如果最開始 選擇用 easyexcel 的話,應該不會出現這個問題,畢竟版本會根據阿里的來。

成功后的結果:

  使用 @ExcelProperty value 多個參數問題 也就解決了。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM