傻Lin 2024-01-10 09:36 采纳率: 0%
浏览 16

xlsx-streame组件如何兼容poi5.x

在poi和poi-ooxml版本为4.1.2时,使用xlsx-streamer处理大数据量的excel文件导入OOM问题,现在由于poi漏洞修复,需要升级到5.2.1,xlsx-streamer就不兼容高版本的poi了,poi-ooxml5.1.2提示XSSFReader.getSharedStringsTable方法不存在;各位有什么好的处理方案吗,xlsx-streamer2.2.0是目前官网支持的最高版本,有其他可替换的升级组件吗,以下的导入的依赖和使用方法


 Workbook workbook = StreamingReader.builder()
                .rowCacheSize(100)
                .bufferSize(4096)
                .open(file.getInputStream());
<dependency>
            <groupId>com.monitorjbl</groupId>
            <artifactId>xlsx-streamer</artifactId>
            <version>2.2.0</version>
<dependency>
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-10 12:37
    关注

    【以下回答由 GPT 生成】

    问题是如何使xlsx-streamer组件与poi5.x兼容,因为在使用poi和poi-ooxml版本为4.1.2处理大量Excel文件时遇到了OOM问题。并且,升级到poi的5.2.1版本后,xlsx-streamer不再兼容。

    解决方案是使用并迁移至其他支持poi5.x版本的Excel处理组件。根据问题描述,可以考虑使用Apache的EasyExcel框架,它是一种基于注解的Java处理Excel文件的解决方案。以下是尝试使用EasyExcel的步骤:

    1. 在pom.xml文件中添加EasyExcel的依赖:
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.2.11</version>
    </dependency>
    
    1. 使用EasyExcel的WorkbookFactory.read方法打开Excel文件,该方法支持流式读取Excel文件:
    InputStream inputStream = file.getInputStream();
    EasyExcel.read(inputStream).sheet().doRead();
    
    1. 在doRead方法中,您可以编写具体的逻辑来处理Excel中的数据。例如,实现EventListener接口来处理每行数据:
    public class ExcelListener extends AnalysisEventListener<Object>{
        @Override
        public void invoke(Object data, AnalysisContext context) {
            // 处理每行数据的逻辑
        }
    
        @Override
        public void doAfterAllAnalysed(AnalysisContext context) {
            // 处理完所有数据后的逻辑
        }
    }
    
    InputStream inputStream = file.getInputStream();
    ExcelListener excelListener = new ExcelListener();
    EasyExcel.read(inputStream, excelListener).sheet().doRead();
    

    请注意,以上代码只是一个示例,您可以根据实际需求进行适当的修改和调整。

    总结一下,为了解决xlsx-streamer与poi5.x不兼容的问题,您可以迁移到其他支持poi5.x的Excel处理组件,如EasyExcel。请按照上述步骤在您的项目中使用EasyExcel来处理Excel文件。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 1月10日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题