关于 Java 读取 Excel,直接报错的问题.希望大佬能指点下

2020-09-03 00:05:22 +08:00
 cryboy007

今天,跟自己的一个小伙伴聊天.在得知他经常复制粘贴 excel 数据后.觉得试试 java 读取然后进行重复性工作.结果直接报如下错误.百度了好久都没找出是什么原因.但是我看他用 Python 可以直接读取.这就很尴尬了.谢谢大佬们的指点 Exception in thread "main" java.lang.IllegalArgumentException: targetUri invalid - http://invalid.uri at org.apache.poi.openxml4j.opc.PackagingURIHelper.resolvePartUri(PackagingURIHelper.java:427) at org.apache.poi.openxml4j.opc.PackageRelationship.getTargetURI(PackageRelationship.java:206) at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:562) at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:592) at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:592) at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:165) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:270) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:184) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:149) at com.sl.utils.office.excel.ExcelUtils.readExcelXlsx(ExcelUtils.java:101) at com.sl.utils.ExcelDemand.main(ExcelDemand.java:22)

2331 次点击
所在节点    Java
10 条回复
CEBBCAT
2020-09-03 00:57:26 +08:00
读懂错误报告首先要明白错误报告的结构,堆栈信息是如何组织的,以及自己看看各部分信息如函数名、包名、文件名、行号是怎样影响错误日志的

你这个问题看起来像是传给函数 readExcelXlsx 的参数不对。发一下错误复现代码吧
cryboy007
2020-09-03 01:25:44 +08:00
@CEBBCAT 直接就第一行读取 excel 报错,Workbook 读取流直接报错.
wowo243
2020-09-03 06:53:51 +08:00
有没有可能是 poi 与 excel 版本对不上
wowo243
2020-09-03 06:54:11 +08:00
比如 xls 跟 xlsx 的区别
CEBBCAT
2020-09-03 10:06:09 +08:00
第几行就出错和我以及这个问题没什么关系,什么 Workbook 读取流直接报错听起来像是它欠了你几个亿。

问题就在那里,是等它变好还是主动 debug,看你的了。

如果问题描述得清晰,那你就能让没用过 org.apache.poi 的人结合官方文档、代码和示例找出你的问题。现在这样子只能让有 org.apache.poi 经验的人根据经验猜测你可能在什么地方犯了错误。
cryboy007
2020-09-03 10:57:20 +08:00
@CEBBCAT 嗯嗯,谢谢指教.我 debug 看了下.是因为这个校验不过去.看不懂是什么原因..
/**
* Tells whether or not this URI is absolute.
*
* <p> A URI is absolute if, and only if, it has a scheme component. </p>
*
* @return {@code true} if, and only if, this URI is absolute
*/
public boolean isAbsolute() {
return scheme != null;
}
cryboy007
2020-09-03 10:58:15 +08:00
@wowo243 不是这个得问题..文件是 xlxs,我用的 XSSFWorkbook 读的
MeowOvO
2020-09-03 15:59:23 +08:00
你传的 path 是?
cryboy007
2020-09-03 18:02:37 +08:00
@MeowOvO excel 的绝对路径路径
MeowOvO
2020-09-04 11:43:30 +08:00
@cryboy007 打印一下 path,看看是不是该加转义什么的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/703710

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX