org.apache.poi.ss.usermodel 包可以从多个模块访问:poi、poi.ooxm
Posted
技术标签:
【中文标题】org.apache.poi.ss.usermodel 包可以从多个模块访问:poi、poi.ooxm【英文标题】:The package org.apache.poi.ss.usermodel is accessible from more than one module: poi, poi.ooxm 【发布时间】:2019-01-25 09:01:22 【问题描述】:在此问题的所有参考资料中,它未已解决且不提供 maven,因为 not 在 maven 中进行操作。 错误是包org.apache.poi.ss.usermodel 可以从多个模块访问:poi, poi.ooxm 在两个错误中
我必须同时使用 poi 和 poi--ooxml,请运行此代码,我需要使用它。甚至此代码也是从互联网本身中提取的,并且有很多博客都显示了这种类型的代码,这是我的实际要求,但它不起作用。
【问题讨论】:
不要使用模块!只需将它们放在类路径上,而不是模块路径上 Apache POI does not yet fully support the Java 9 module system...as Apache POI currently uses the same package in different jar-files。但这仅仅是原因。我也没有解决办法。至少不使用 Eclipse,因为我没有使用那个 IDE。下一个apache poi
版本4.0
似乎避免了“在不同的jar 文件中使用相同的包”。
那怎么用呢。因为他们都是这个程序的强制要求。解决方案?
从 poi-ooxml - 3.17 切换到 poi-ooxml-4.1.2.jar 为我解决了这个问题。
【参考方案1】:
我遇到了同样的问题并找到了解决方案。这有点晚了,但可能会帮助其他面临同样问题的人。 在您的模块中删除“需要 poi”并保留需要 poi.ooxml;
module com.example.MyModlue
//other require statement goes here
requires poi.ooxml;
现在在你的代码中
代替使用 (CellType.NUMERIC) 导入 org.apache.poi.ss.usermodel.CellType;
获取单元格类型使用 (cell.getCellTypeEnum().NUMERIC) where cell if of type XSSFCell
import org.apache.poi.xssf.usermodel.XSSFCell;
希望这会有所帮助。 :)
【讨论】:
我使用var
类型推断来避免直接引用类型。【参考方案2】:
只需在模块类中将所有库添加到要求中
module MyProjct
requires poi;
requires poi.excelant;
requires poi.ooxml;
requires poi.ooxml.schemas;
【讨论】:
【参考方案3】:如果有人有同样的问题,只需下载新版本的 POI,旧版本与新版本的 java 不兼容
【讨论】:
以上是关于org.apache.poi.ss.usermodel 包可以从多个模块访问:poi、poi.ooxm的主要内容,如果未能解决你的问题,请参考以下文章