EasyExcel读取多sheet excel异常

这篇具有很好参考价值的文章主要介绍了EasyExcel读取多sheet excel异常。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

EasyExcel读取多sheet excel异常

场景

使用Spring Boot集成EasyExcel进行导入excel多sheet,执行异常

代码

file是MultipartFile,入参,主要处理流程如下

InputStream is = file.getInputStream();
EasyExcel.read(is, SysDict.class, new SysDictReadListener(sysDictMapper, 0L))
        .sheet(0, "目录")
        .doRead();

List<SysDict> list = sysDictMapper.selectByDictClass1();
for (int i = 0; i < list.size(); i++) {
    SysDict sysDict = list.get(i);
    // sheet序号
    Integer sheetNo = i + 1;
    String sheetName = sysDict.getDictName();
    EasyExcel.read(is, SysDict.class, new SysDictReadListener(sysDictMapper, sysDict.getDictId()))
            .sheet(sheetNo, sheetName)
            .doRead();
}

问题描述

异常:com.alibaba.excel.exception.ExcelCommonException: Convert excel format exception.You can try specifying the ‘excelType’ yourself

按照描述,缺少excelType参数,补充后,代码大概如下:

EasyExcel.read(is, SysDict.class, new SysDictReadListener(sysDictMapper, 0L))
        .excelType(ExcelTypeEnum.XLSX)
        .sheet(0, "目录")
        .doRead();

异常:com.alibaba.excel.exception.ExcelAnalysisException: Can not create temporary file!

方案

按照上述补充excelType,并不能解决问题,经过检索,发现问题是多sheet会重复读取流对象,而一个流对象只能读取一次,重复使用,会导致上述异常,解决代码如下:文章来源地址https://www.toymoban.com/news/detail-605033.html

// 获取MultipartFile的流
is = file.getInputStream();

// 读取第一个sheet
EasyExcel.read(..);

// 读取剩余的sheet
is = file.getInputStream();
EasyExcel.read(..);

到了这里,关于EasyExcel读取多sheet excel异常的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot基于easyexcel实现一个excel文件包含多个sheet表格的数据导出

    EasyExcel 是一款基于Java的开源Excel操作工具,它提供了简单且强大的 API,使开发人员可以轻松地读写、操作和生成Excel文件。 EasyExcel 支持 Excel 文件的导入和导出,可以处理大量数据,具有高性能和低内存占用。它可以读取 Excel 文件中的数据,并将数据转换为 Java 对象,也可

    2024年02月03日
    浏览(45)
  • java处理Excel表格(EasyExcel)

    1.EasyExcel特点 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。 EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节

    2024年02月15日
    浏览(35)
  • SpringBoot中java操作excel【EasyExcel】

    EasyExcel 处理Excel;简单记录,方便日后查询! 官方文档: Easy Excel (alibaba.com) Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版

    2024年02月15日
    浏览(32)
  • java解析excel,poi和easyExcel

    做项目遇到上传excel并解析excel内容组装成结构话json,网上查了很多方法,做了poi和easyExcel两个方法的对比 两者都可以解析excel文件,但是两个也有不同: 一、poi 官方说明:https://poi.apache.org/components/index.html A、03版excel和07版excel: 1)03版excel最多65536行,最大列数是256列,

    2023年04月22日
    浏览(35)
  • Java——使用EasyExcel导出动态列的Excel

    多多点赞,会变好看! 多多留言,会变有钱! 有些时候列表的列可能是动态的,需要根据动态表头导出Excel文件,这时候可以使用下面的方法解决: 静态列导出代码:

    2024年02月15日
    浏览(38)
  • java实现excel的导出之使用easyExcel

    在我们的项目需求中,经常会遇到导出的需求,其中excel的导出最为常见。生成Excel比较有名的框架有Apache poi,jxl等,但他们都存在一个严重的问题就是非常的耗内存,如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc. EasyExcel是阿里巴巴

    2024年02月15日
    浏览(34)
  • JAVA解析EXCEL(JExcelAPI,POI,EasyExcel)

    demo代码:https://github.com/RwTo/excel-demo JAVA解析Excel 一般有三种方式 JExcelAPI POI EasyExcel 官网:https://jexcelapi.sourceforge.net/ 仅支持 2003 版本的Excel 也就是 后缀名为 xls 的文件 采用流式处理模型,逐行读取和写入 ——因此 可以处理大量数据,一般不会出现OOM Demo 读xls 文件 写xls 文件

    2024年02月15日
    浏览(30)
  • Java 导出Excel表格生成下拉框-EasyExcel

     

    2024年02月11日
    浏览(41)
  • 【JAVA】easyexcel 导出excel文件带多个图片

    最终效果  pom版本 实现代码  

    2024年02月16日
    浏览(26)
  • 基于EasyExcel的Excel读取

    1.引入依赖 2.读取器代码: 3.测试

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包