如何使用 POI 3.6 对 .xlsx 文件中的列进行分组?

发布于 2024-09-09 23:03:35 字数 241 浏览 7 评论 0原文

我最近从 POI 3.1 (HSSF) 切换到 POI 3.6 (XSSF) 并遇到了问题。

问题是 groupColumn 不再按预期工作!

有谁知道为什么列分组仅在写入工作表中的单元格之前才能正常工作,而在写入工作表后则不能正常工作?

在列的单元格中写入数据之后,有没有办法对 xlsx 文件上的列进行分组?

非常感谢,
加布里埃拉

I recently switched from POI 3.1 (HSSF) to POI 3.6 (XSSF) and encountered a problem.

The problem is that the groupColumn no longer works as expected!

Does anyone know why the column grouping works properly only BEFORE writing in the cells from the worksheet and does not work well AFTER the worksheet is written?

Is there a way to group columns on an xlsx file after writing data in the column's cells?

Thank you very much,
Gabriela

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌化 2024-09-16 23:03:35

我也遇到过同样的问题。以下代码可以很好地满足我的目的:

     for ( int index = groupingRange.getFirstColumn() + 1; index <= groupingRange.getLastColumn() + 1; index++ ) {
        CTCols[] colsArray = targetSheet.getCTWorksheet().getColsArray();

        colSearch: for ( int i = 0; i < colsArray.length; i++ ) {
           CTCol[] colArray = colsArray[i].getColArray();
           for ( int j = 0; j < colArray.length; j++ ) {
              if ( index == colArray[j].getMin() ) {
                 colArray[j].setOutlineLevel((short)(colArray[j].getOutlineLevel() + 1));
                 colArray[j].setCollapsed(true);
                 colArray[j].setHidden(true);

                 index = (int)colArray[j].getMax();
                 break colSearch;
              }
           }
        }
     }

最好
奥拉夫

I've had the same problem. The following code works fine for my purposes:

     for ( int index = groupingRange.getFirstColumn() + 1; index <= groupingRange.getLastColumn() + 1; index++ ) {
        CTCols[] colsArray = targetSheet.getCTWorksheet().getColsArray();

        colSearch: for ( int i = 0; i < colsArray.length; i++ ) {
           CTCol[] colArray = colsArray[i].getColArray();
           for ( int j = 0; j < colArray.length; j++ ) {
              if ( index == colArray[j].getMin() ) {
                 colArray[j].setOutlineLevel((short)(colArray[j].getOutlineLevel() + 1));
                 colArray[j].setCollapsed(true);
                 colArray[j].setHidden(true);

                 index = (int)colArray[j].getMax();
                 break colSearch;
              }
           }
        }
     }

Best
Olaf

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文