V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cryboy007
V2EX  ›  Java

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

  •  
  •   cryboy007 · 2020-09-03 00:05:22 +08:00 · 2380 次点击
    这是一个创建于 1574 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天,跟自己的一个小伙伴聊天.在得知他经常复制粘贴 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)

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

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

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

    如果问题描述得清晰,那你就能让没用过 org.apache.poi 的人结合官方文档、代码和示例找出你的问题。现在这样子只能让有 org.apache.poi 经验的人根据经验猜测你可能在什么地方犯了错误。
    cryboy007
        6
    cryboy007  
    OP
       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
        7
    cryboy007  
    OP
       2020-09-03 10:58:15 +08:00
    @wowo243 不是这个得问题..文件是 xlxs,我用的 XSSFWorkbook 读的
    MeowOvO
        8
    MeowOvO  
       2020-09-03 15:59:23 +08:00
    你传的 path 是?
    cryboy007
        9
    cryboy007  
    OP
       2020-09-03 18:02:37 +08:00
    @MeowOvO excel 的绝对路径路径
    MeowOvO
        10
    MeowOvO  
       2020-09-04 11:43:30 +08:00
    @cryboy007 打印一下 path,看看是不是该加转义什么的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5692 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 107ms · UTC 06:25 · PVG 14:25 · LAX 22:25 · JFK 01:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.