POI XSSFSheet shiftRows bug问题解决

 更新时间:2023年07月17日 11:28:54   作者:南岩飞雪  
这篇文章主要介绍了POI XSSFSheet shiftRows bug问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

问题

业务中需要往给定格式的excel中写入数据。
使用shiftRows函数往excel中插入新行时,xls文件没问题,xlsx文件问题多多

  • 执行如下代码,xls格式插入了3行,xlsx格式却只插入了2行
  • xlsx执行shiftRows操作之后,合并单元格丢失
  • xlsx执行shiftRows操作之后,用excel打开提示格式有问题,用wps打开正常
        InputStream inp = new FileInputStream("/Users/shao/Downloads/模板.xlsx");
        Workbook templateWorkbook = WorkbookFactory.create(inp);
        Sheet sheet = templateWorkBook.getSheetAt(0);
        sheet.shiftRows(5, sheet.getLastRowNum(), 1);
        sheet.shiftRows(5, sheet.getLastRowNum(), 1);
        sheet.shiftRows(5, sheet.getLastRowNum(), 1);
        OutputStream outputStream = new FileOutputStream("/Users/shao/Downloads/模板输出.xlsx");
        templateWorkbook.write(outputStream);

解决

poi 4.1.1版本修复了该bug,升级到最新的4.1.2,问题解决

            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>4.1.2</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.1.2</version>
            </dependency>

原因

poi bug

参考

https://stackoverflow.com/questions/55980407/apache-poi-shiftrows-corrupts-file-and-deletes-content

http://poi.apache.org/changes.html

以上就是POI XSSFSheet shiftRows bug问题解决的详细内容,更多关于POI XSSFSheet shiftRows bug的资料请关注脚本之家其它相关文章!

相关文章

  • Spring框架核心概念小结

    Spring框架核心概念小结

    Spring是企业级Java的开源开发框架。Spring框架的核心功能可用于开发任何java应用程序,本文重点给大家介绍Spring框架核心概念总览,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • idea连接数据库的操作方法

    idea连接数据库的操作方法

    这篇文章主要介绍了idea如何连接数据库,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • 基于java Springboot实现教务管理系统详解

    基于java Springboot实现教务管理系统详解

    这篇文章主要介绍了Java 实现简易教务管理系统的代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • java冒泡排序简单实例

    java冒泡排序简单实例

    本文主要介绍了JSONjava冒泡排序实例与思路分析。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • 如何实现广告弹窗触达频率的控制?

    如何实现广告弹窗触达频率的控制?

    这篇文章主要介绍了如何实现广告弹窗触达频率的控制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • maven打包失败踩坑的解决方式详解

    maven打包失败踩坑的解决方式详解

    最近因为新项目有很多自定义的jar包,而且占内存很多,就直接拷贝过来,新开了一个maven仓库,用的时候没有问题,但是打包一直编译不通过,下面这篇文章主要给大家介绍了关于maven打包失败踩坑的解决方式,需要的朋友可以参考下
    2023-05-05
  • SpringBoot2.7 WebSecurityConfigurerAdapter类过期配置

    SpringBoot2.7 WebSecurityConfigurerAdapter类过期配置

    这篇文章主要为大家介绍了SpringBoot2.7中WebSecurityConfigurerAdapter类过期应该如何配置,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • java stringbuffer的用法示例

    java stringbuffer的用法示例

    这篇文章主要介绍了java stringbuffer的用法示例,字符串缓冲区,是一个容器(当返回到的是String时而且长度不确定,数据类型不确定时就可以用StringBuffer)其实底层还是数组,只是被封装了,对外提供了方法,初始容量为16个字符
    2014-01-01
  • springboot项目中controller层与前端的参数传递方式

    springboot项目中controller层与前端的参数传递方式

    这篇文章主要介绍了springboot项目中controller层与前端的参数传递方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Java调用ChatGPT API并实现流式接收方式(Server-Sent Events,SSE)

    Java调用ChatGPT API并实现流式接收方式(Server-Sent Events,SSE)

    文章介绍如何在Java中通过OkHttp和SSE技术实现流式获取ChatGPT响应,解决传统HTTP阻塞问题,提升用户体验,需配置stream参数,利用SseEmitter封装后端推送,前端使用EventSourcePolyfill插件处理Token,同时注意资源管理和避免换行符干扰
    2025-08-08

最新评论