当前位置: 首页 > 知识库问答 >
问题:

Apache POI Streamsheet getRow不支持的操作异常

楚宏胜
2023-03-14

我想从excel(.xlsx)文件中读取超过60万行。

我使用的是ApachePOI和xlsx拖缆。

<dependency>
        <groupId>com.monitorjbl</groupId>
        <artifactId>xlsx-streamer</artifactId>
        <version>1.2.0</version>
</dependency>

Apache poi版本为3.15,因为xlsx streamer在上述版本中不支持

我只想迭代特定的列。我尝试过的是:

File myFile = new File("testFile.xlsx");

    FileInputStream fis = new FileInputStream(myFile);
    Workbook workbook = StreamingReader.builder().bufferSize(4096).open(fis);
    // Sheet sheet = workbook.getSheetAt(0);
    for (Sheet sheet : workbook) {
        for (int r = 0; r < sheet.getLastRowNum(); r++) {
            Row rr = sheet.getRow(r);
            for (int c = 1; c < rr.getLastCellNum(); c++) {
                Cell cell = rr.getCell(c);
                System.out.println("" + cell.getStringCellValue());
            }
        }

我得到这个例外,几乎没有警告

Exception in thread "main" java.lang.UnsupportedOperationException
at com.monitorjbl.xlsx.impl.StreamingSheet.getRow(StreamingSheet.java:102)
at ReadExcel.main(ReadExcel.java:35)

第35行是

Row rr = sheet.getRow(r);

共有1个答案

国阳
2023-03-14

这个错误有一个错误。看这里。

您可以将java版本更改为可以解决问题的java 8。

 类似资料:
  • 相反,将引发“UnsupportedOperationException”。看起来ContainerRequest没有从修改的请求中提取UserPrincipal。 修改是通过 问题是如何将主体信息从HttpServerProbe传输到ContainerRequestFilter。request具有安全信息(在本例中是SSL客户机证书信息),而com.sun.jersey.spi.containe

  • 我不知道;我不太明白在哪里可以抛出这个异常。 例如,我正在实现

  • 下面是在strList5的subList.clear()调用中引发异常的代码: 我清除子列表的方式有问题吗?或者这是8Java的臭虫?我的Java8在Mac上的版本是:java版本"1.8.0_45"Java(TM)SE运行时环境(构建1.8.0_45-b14)JavaHotSpot(TM)64位服务器VM(构建25.45-b02,混合模式)

  • 我正在使用sql server进行数据库连接。并且我希望在运行多个结果集时保持结果集打开。我使用了,但在执行语句时出现以下错误, 由于我是使用sql server的新手,所以我对其中的一些概念还不是很了解。如果有人知道为什么会这样请回答我。

  • 问题内容: 电子邮件验证 我想知道为什么我的数据不会写入磁盘。Python说我的操作不受支持。 问题答案: 您以只读方式打开变量“文件”,然后尝试对其进行写入: 相反,请使用“ w”标志。

  • SDS 提供了以下一系列操作来处理表和记录 表操作 SDS 提供创建、修改、复制、禁用、启用和删除表的操作 创建表(createTable):以指定的表名和schema创建一张表 修改表(alterTable):可以增加或删除属性,修改表权限,修改读写配额、空间配额,修改二级索引类型等 复制表(cloneTable):从现有的表复制一张表名不同但内容一样的表 禁用表(disableTable):将