POI groupRow 折叠分组,折叠部分不显示问题

这篇具有很好参考价值的文章主要介绍了POI groupRow 折叠分组,折叠部分不显示问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

折叠组是什么?如图就是用POI 实现的,代码很简单:sheet.groupRow(开始行,结束行)即可
POI groupRow 折叠分组,折叠部分不显示问题,python,开发语言
但是万万没想到,最终实现出的结果,合并的组,有一部分并没有渲染出来,如下图:

POI groupRow 折叠分组,折叠部分不显示问题,python,开发语言POI groupRow 折叠分组,折叠部分不显示问题,python,开发语言
因为我的合并数据,是结合着数据逻辑的特殊动态计算出来的,一直认为是我算法的问题,或者是数据的问题,
这是我的算法,


 合并组调用:
 List<List<Integer>> groupRows = setGroupRowE(startIndex,dataB);
 for(int i=0; i<groupRows.size(); i++) {
     sheet.groupRow(groupRows.get(i).get(0),groupRows.get(i).get(1));
  }
/**
     * 根据数据规则动态计算分组下标
     * @param startIndex
     * @param data
     * @return
     */
    private List<List<Integer>> setGroupRowE(int startIndex,List<Map<String, Object>> data) {

        List<List<Integer>> groupRowAll = new ArrayList<>();
        List<List<Integer>> groupRow2 = new ArrayList<>();
        Map<String,List<Integer>> cache = new LinkedHashMap<>();
        int finalStartIndex = startIndex;
        for(int i = 0; i <data.size(); i++) {
            if(Constant.SYMBOL.equals(data.get(i).get(Constant.SEC_TYPE1))){
                // 第一级
                int finalI = i;
                int firstRow0 = groupRowAll.size() == 0 ? finalStartIndex : (int)groupRowAll.get(groupRowAll.size()-1).get(1)+1;
                List<Map<String, Object>> finalData1 = data;
                int count = (int) data.stream().filter((item)-> finalData1.get(finalI).get(Constant.RULE_TYPE).equals(item.get(Constant.RULE_TYPE)) && !Constant.SYMBOL.equals(item.get(Constant.SEC_TYPE1))).collect(Collectors.toList()).size();
                List<Integer> group1 = new ArrayList<>();
                if (count == 0) {
                    group1  =  Arrays.asList(firstRow0,firstRow0);
                    groupRow2 = new ArrayList<>();
                    System.out.println("---" +data.get(finalI).get(Constant.RULE_TYPE).toString()+ "---" + group1);
                    cache.put(data.get(finalI).get(Constant.RULE_TYPE).toString(), group1);
                    groupRowAll.add(group1);
                } else {
                    group1 =  Arrays.asList(firstRow0 + 1,firstRow0 + count);
                    cache.put(data.get(finalI).get(Constant.RULE_TYPE).toString(), group1);
                    System.out.println("---" +data.get(finalI).get(Constant.RULE_TYPE).toString()+ "---" + group1);
                    groupRow2 = new ArrayList<>();
                    groupRowAll.add(group1);
                }
            }
            if(Constant.SYMBOL.equals(data.get(i).get(Constant.SEC_TYPE))){
                // 第二级
                int finalI = i;
                int firstRow0 = groupRow2.size() == 0 ? cache.get(data.get(finalI).get(Constant.RULE_TYPE).toString()).get(0) : (int)groupRow2.get(groupRow2.size()-1).get(1)+1;
                List<Map<String, Object>> finalData = data;
                int count = (int) data.stream().filter((item)-> finalData.get(finalI).get(Constant.RULE_TYPE).equals(item.get(Constant.RULE_TYPE))
                                                        && finalData.get(finalI).get(Constant.SEC_TYPE1).equals(item.get(Constant.SEC_TYPE1))
                                                        && !Constant.SYMBOL.equals(item.get(Constant.SEC_TYPE))).collect(Collectors.toList()).size();
                List<Integer> group1 =  Arrays.asList(firstRow0 + 1,firstRow0 + count);
                System.out.println("--------" +group1);
                groupRow2.add(group1);
                groupRowAll.add(group1);
            }
        }
        System.out.println(groupRowAll);
        return groupRowAll;
    }

POI groupRow 折叠分组,折叠部分不显示问题,python,开发语言
经过反复调试,和数据比对,数据应该没问题,针对计算出来的合并组行和Excel的行进行比对,没有发现任何问题,现在很大程度上认为是POI的BUG。

问题解决

还好没有放弃,通过百度,和翻阅资料,找到了唯一的一篇文章https://www.5axxw.com/questions/content/u1sln7
里面的问题和我的问题一样,解决点来说就是在最初创建workbook对象,我new 的是SXSSFWorkbook对象,应该用XSSFWorkbook对象,那么他俩到底啥区别呢?
POI groupRow 折叠分组,折叠部分不显示问题,python,开发语言
也就是我们用流操作workbook在操作时获取的不是一个完整的Workbook对象,它是为了防止内存溢出;知道这一点,只需要将SxssFWorkbook 改为XSSFWorkbook,Sheet 改为XSSFSheet 即可,其余不变

POI groupRow 折叠分组,折叠部分不显示问题,python,开发语言
POI groupRow 折叠分组,折叠部分不显示问题,python,开发语言
执行导出结果:
POI groupRow 折叠分组,折叠部分不显示问题,python,开发语言
POI groupRow 折叠分组,折叠部分不显示问题,python,开发语言
POI groupRow 折叠分组,折叠部分不显示问题,python,开发语言文章来源地址https://www.toymoban.com/news/detail-668908.html

到了这里,关于POI groupRow 折叠分组,折叠部分不显示问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Android去除折叠屏两边的黑边,默认全屏显示

    1、在AndroidManifest.xml中设置resizeableActivity为true sdk=24resizeableActivity默认为true,小于24位false 可以设置在application中,影响app全局 可以设置在activity标签,影响当前activity 2、设置max_aspect与min_aspect

    2024年04月23日
    浏览(34)
  • 已解决无法绑定由多个部分组成的标识符

    已解决(SQL两表相连报错)无法绑定由多个部分组成的标识符 粉丝群里面的一个粉丝想用SQL写两表相连查询,但是发生了报错(跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错信息和代码如下: 报错信息截图

    2023年04月23日
    浏览(46)
  • uniapp解决折叠屏手机适配问题

    折叠屏手机翻开或关上时,手机的宽度会改变;那么怎么监测手机屏幕的变化呢,这就用到了uniapp中的 uni.onWindowResize currPage.$page.fullPath 是当前页面的路径+参数 pages/login/blank 页面是个空白页面;因为我需要跳到这个空白页面然后再跳回来,从而实现页面重新加载。因为在ap

    2024年02月08日
    浏览(40)
  • 关于 VSCode 文件夹折叠问题

    1、在 VSCode 中,父文件夹下面如果只有一个子文件夹,就会出现下图所示的折叠情况: 2、这种情况十分影响我们选中文件夹时的体验感,打开 设置 : 3、在设置界面搜索: Explorer:Compact Folders 4、取消该项的勾选,即可解决单个文件夹折叠的问题。 5、到此问题就解决了,希

    2024年02月15日
    浏览(50)
  • 封装vue基于element的select多选时启用鼠标悬停折叠文字以tooltip显示具体所选值

    相信很多公司的前端开发人员都会选择使用vue+element-ui的形式来开发公司的管理后台系统,基于element-ui很丰富的组件生态,我们可以很快速的开发管理后台系统的页面(管理后台系统的页面也不复杂,大多都是分页查询类需求和增删改查)。但一个前端框架有优点,就必然会

    2024年02月06日
    浏览(49)
  • ChatGPT工作提效之使用python开发对接百度地图开放平台API的实战方案(批量路线规划、批量获取POI、突破数量有限制、批量地理编码)

    ChatGPT工作提效之初探路径独孤九剑遇强则强 ChatGPT工作提效之在程序开发中的巧劲和指令(创建MySQL语句、PHP语句、Javascript用法、python的交互) ChatGPT工作提效之生成开发需求和报价单并转为Excel格式 ChatGPT工作提效之小鹅通二次开发批量API对接解决方案(学习记录同步、用户注

    2024年02月06日
    浏览(52)
  • java中使用POI将word转为PDF时无法显示文字

    背景: 在windos上本地调试时使用POI将word转为PDF时, PDF无法显示文字的原因以及解决方案: 原因1 :字体不存在问题, word中使用的字体在系统(windows或者linux)上一定要已经安装, 否则PDF无法显示文字, 将需要的字体下载下来, 复制到 1) windows 的 C:WindowsFonts 文件夹下面, 然后重启机器

    2023年04月10日
    浏览(86)
  • 谷粒商城第十天-分组新增级联显示商品分类&分组修改级联回显商品分类

    目录 一、总述 二、前端实现 三、后端实现 四、总结 本次就是一个小的优化。 就是分组新增或者是修改的时候,直接显示商品分类的id可读性不高,新增的时候需要填写对商品分类的id,修改的时候,就只是给你一个商品分类的数字,并不能直接显示到底是什么分类。 那有

    2024年02月14日
    浏览(48)
  • 鸿蒙原生应用开发-折叠屏、平板设备服务卡片适配

    为不同尺寸的卡片提供不同的功能 在卡片开发过程中请考虑适配不同尺寸的设备,特别是在折叠屏和平板设备上,设备屏幕尺寸的变化直接影响了卡片内容的展示。请发挥想象力设计具有自适应能力的卡片,避免在卡片内容不做任何处理的情况下直接适配成较大尺寸,原则上

    2024年02月03日
    浏览(49)
  • Android使用Jetpack WindowManager来开发可折叠设备的探索

    我们在Google开发者大会上,看到Jetpack WindowManager和WindowSizeClass这些技术,如下图。 那这里不得不说折叠屏手机了 在其中一个显示区域中运行一个应用。 同时运行两个应用,各位于一个显示区域中(在 multi-window 模式下)。 可折叠设备还支持不同的折叠状态。折叠状态可用来

    2024年02月08日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包