使用easyPOI时碰到的几个问题(记录一下)

简介: 前面我们说了如何使用easyPOI,详情请参考全网最全最简单使用easypoi导入导出Excel的操作手册,今天我来记录下在使用easyPOI时碰到的几个问题,本来以为上传下载功能使用EasyPOI之后挺简单的,结果翻车了,一个上传和下载就因为版本的问题搞了老半天。真的是很愁人呀。下面就是我系统的初始环境。

前言

前面我们说了如何使用easyPOI,详情请参考全网最全最简单使用easypoi导入导出Excel的操作手册,今天我来记录下在使用easyPOI时碰到的几个问题,本来以为上传下载功能使用EasyPOI之后挺简单的,结果翻车了,一个上传和下载就因为版本的问题搞了老半天。真的是很愁人呀。下面就是我系统的初始环境。

环境

 

<!-- springboot -->
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
    </parent>
  <!-- springboot -->
  <!--easypoi-->
  <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-spring-boot-starter</artifactId>
            <version>4.0.0</version>
        </dependency>
 <!--easypoi-->
 <!--commons-collections4-->
 <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.0</version>
        </dependency>
  <!--commons-collections4-->

本来以为一件非常简单的事情,结果一连碰到了三个问题,啪啪打脸呀。问题分别如下:


问题1(ArrayListValuedHashMap找不到)

提示ArrayListValuedHashMap找不到的问题,报错如下图所示:


这个问题主要就是因为commons-collections4的版本是4.0,版本比较低,升级到4.1后就可以了。,升级后的依赖如下:

<dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-collections4</artifactId>
           <version>4.1</version>
       </dependency>

解决第一个问题之后,紧接着我就碰到第二个问题。上传的时候文件的时候同样还是提示某某类找不到的问题。这有点让人揪心。

问题2(CellType类找不到)

第二个问题如下图所示:提示CellType类找不到,真的就很奇怪了,这个类明明可以搜索的到,为啥系统就提示找不到呢?

一番百度之后还是无果,莫得办法,我只有尝试着将easypoi-spring-boot-starter依赖的版本从4.0.0降到3.3.0。版本换成3.3.0之后,上传文件就可以了,真的是太神奇了。

<dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-spring-boot-starter</artifactId>
            <version>3.3.0</version>
        </dependency>

问题3(CellStyle.setAlignment)

搞定上传文件的功能之后,我很开行,紧接着就去试试下载文件的功能了。哎,老天捉弄我呀,之前一直好好的的下载功能,就在我将easypoi-spring-boot-starter依赖的版本从4.0.0降到3.3.0之后,就不行了。报错如下:

Caused by: java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.CellStyle.setAlignment(S)V
  at cn.afterturn.easypoi.excel.export.styler.ExcelExportStylerDefaultImpl.stringNoneStyle(ExcelExportStylerDefaultImpl.java:69) ~[easypoi-base-3.3.0.jar:?]
  at com.nuonuo.juhe.common.util.excel.ExcelStyleUtil.stringNoneStyle(ExcelStyleUtil.java:42) ~[classes/:?]
  at cn.afterturn.easypoi.excel.export.styler.AbstractExcelExportStyler.createStyles(AbstractExcelExportStyler.java:44) ~[easypoi-base-3.3.0.jar:?]
  at cn.afterturn.easypoi.excel.export.styler.ExcelExportStylerDefaultImpl.<init>(ExcelExportStylerDefaultImpl.java:31) ~[easypoi-base-3.3.0.jar:?]
  at com.nuonuo.juhe.common.util.excel.ExcelStyleUtil.<init>(ExcelStyleUtil.java:16) ~[classes/:?]
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_181]
  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_181]
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_181]
  at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_181]
  at cn.afterturn.easypoi.excel.export.ExcelExportService.insertDataToSheet(ExcelExportService.java:225) ~[easypoi-base-3.3.0.jar:?]

哎,又是这个CellStyle类的问题,真的很愁人呀。没有办法,只得继续去处理。又是一番百度。从网上得到了一个答案,说的是需要将poi-ooxml的版本从3.17降到3.15。但是,我找了一圈我也没找到项目中有直接引入poi-ooxml这个依赖。找了半天发现项目中一个工具类中引入了poi-ooxml依赖,版本号是3.17。(PS: 找依赖的方法是:在Maven Projects中选中项目,右键Show Dependencies)而easypoi-spring-boot-starter依赖已经引入的poi-ooxml依赖的版本是3.15。 这里就出现了版本冲突。处理方式就是将工具类中的那个poi-ooxml依赖去除掉。

<exclusions>
                <exclusion>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi-ooxml</artifactId>
                </exclusion>
            </exclusions>

这三个问题处理好之后,上传文件和下载文件就处理好了。


相关文章
|
Java API Apache
使用 Apache PDFBox 操作PDF文件
Apache PDFBox库是一个开源的Java工具,专门用于处理PDF文档。它允许用户创建全新的PDF文件,编辑现有的PDF文档,以及从PDF文件中提取内容。此外,Apache PDFBox还提供了一些命令行实用工具。
2616 6
|
NoSQL 索引
MongoDB查询优化:从 10s 到 10ms
本文是我前同事付秋雷最近遇到到一个关于MongoDB执行计划选择的问题,非常有意思,在探索源码之后,他将整个问题搞明白并整理分享出来。付秋雷(他的博客)曾是Tair(阿里内部用得非常官方的KV存储系统)的核心开发,目前就职于蘑菇街。
|
8月前
|
缓存 Java 开发者
【Spring】原理:Bean的作用域与生命周期
本文将围绕 Spring Bean 的作用域与生命周期展开深度剖析,系统梳理作用域的类型与应用场景、生命周期的关键阶段与扩展点,并结合实际案例揭示其底层实现原理,为开发者提供从理论到实践的完整指导。
1006 22
|
XML 前端开发 Java
SpringBoot实现文件上传下载功能
本文介绍了如何使用SpringBoot实现文件上传与下载功能,涵盖配置和代码实现。包括Maven依赖配置(如`spring-boot-starter-web`和`spring-boot-starter-thymeleaf`)、前端HTML页面设计、WebConfig路径映射配置、YAML文件路径设置,以及核心的文件上传(通过`MultipartFile`处理)和下载(利用`ResponseEntity`返回文件流)功能的Java代码实现。文章由Colorful_WP撰写,内容详实,适合开发者学习参考。
1156 0
|
SQL XML Java
8、Mybatis-Plus 分页插件、自定义分页
这篇文章介绍了Mybatis-Plus的分页功能,包括如何配置分页插件、使用Mybatis-Plus提供的Page对象进行分页查询,以及如何在XML中自定义分页SQL。文章通过具体的代码示例和测试结果,展示了分页插件的使用和自定义分页的方法。
8、Mybatis-Plus 分页插件、自定义分页
|
11月前
|
人工智能 JSON UED
分享:claude怎么用?记住这10大使用技巧一定事半功倍!
分享:claude怎么用?记住这10大使用技巧一定事半功倍!
1235 4
分享:claude怎么用?记住这10大使用技巧一定事半功倍!
|
关系型数据库 MySQL 数据库
MySQL高级篇——MVCC多版本并发控制
什么是MVCC、快照读与当前读、隐藏字段、Undo Log版本链、ReadView、举例说明、InnoDB 解决幻读问题
MySQL高级篇——MVCC多版本并发控制
|
JSON Java 应用服务中间件
利用esaypoi自定义Excel表格模板导入与导出表单数据
今天工作中又遇到了excel导出数据的功能,在这里我将自己自定义的Excel模板和相关的代码拿出来,解释一下如何进行操作,以便日后能够方便的进行功能开发,提高效率。
2088 0
|
Java 开发者 Spring
springboot @RequiredArgsConstructor @Lazy解决循环依赖的原理
【5月更文挑战第16天】在Spring Boot中,@RequiredArgsConstructor 和 @Lazy 是两个有用的注解,它们分别用于简化构造函数的生成和控制Bean的加载时间。下面详细解析这两个注解的概念、优缺点以及在实际应用中的示例。
2281 1

热门文章

最新文章