2012-02-09 60 views
4

Excel提供菜单DataOutlineSubtotal的小计选项。它自动创建子数据和折叠数据的可能性。下图展示了动作如何转换工作表。实施Excel的小计功能

enter image description here

而这正是我需要通过POI做。我知道如何设置一个小计功能到一个单元格,所以我可以自己计算中间款项。但是,如何在左边框上启用折叠?

我意识到有groupRow()方法,但这些嵌套组不能像他们应该的工作。如果我使用下面的代码,我只能得到两个组。一大(1-7)和(1-3)。组(5-7)缺失,更改通话顺序不起作用。

sheet.groupRow(1, 7); 
sheet.groupRow(1, 3); 
sheet.groupRow(5, 7); 

回答

3

我用POI的一个很老优化版本,但是这是我做的:
我还需要多个嵌套组,所以我不得不对其中缩进级别储存以及该行的模型(这是一棵树,所以缩进是隐含的)。我通过访问者遍历模型来获取组的开始和结束行号。随后为每个组调用HSSFSheet.groupRow。如果我没有记错,组呼的顺序很重要。

+0

莫非你发布了一些你的代码?我仍然没有得到这些嵌套组的工作。 – Kai 2012-02-17 10:03:13

+0

在这里,你去:http://pastebin.com/iFkUFX3q这是从上下文之外抓住,但我希望它仍然可以理解。如果不是,我会粘贴更多。 Group和groupOH对于不同的结构也是一样,所以其中一个应该足够了。 – zeller 2012-02-17 10:10:28

+0

无论如何,如果你认为这会有所帮助,我可以运行一代记录所有分组的行号,然后张贴在表格的某个屏幕上。 – zeller 2012-02-17 10:25:11