java - 使用 Apache POI 生成的数据透视表隐藏 Excel 工作簿中的第一个工作表

标签 java excel apache-poi

我使用 Apache POI 生成了一个包含 6 个工作表的工作簿,其中 3 个带有数据透视表,其余 3 个是这些数据透视表的数据源。

Sheet 1 -> Data1
Sheet 2 -> PivotTable_Data1
Sheet 3 -> Data2
Sheet 4 -> PivotTable_Data2
Sheet 5 -> Data3
Sheet 6 -> PivotTable_Data3

带有“数据透视表”的工作表名称包含数据透视表。

我需要隐藏数据表,以便生成的工作簿仅显示数据透视表,并且用户可以根据需要取消隐藏数据表。

我使用下面的代码来隐藏工作表。

workbook.setSheetVisibility(workbook.getSheetIndex(sheet),SheetVisibility.HIDDEN);

无论我如何尝试,我都无法单独隐藏工作表 1,这对于工作表 3 和工作表 5 效果很好。

我认为这可能是由于 Activity 工作表无法隐藏所致。考虑到这一点,我尝试将工作表 2 设置为选定工作表/Activity 选项卡,但这破坏了数据透视表。

我知道 SheetVisibility.VERY_HIDDEN 但我确信这会引起用户 panic ,因为它需要启用开发人员模式才能取消隐藏工作表。

我怎样才能实现这个目标?

最佳答案

要解决此类问题,请阅读在 Excel 中呈现数据透视表时出现的错误消息。我怀疑它是:“无法在组编辑模式下编辑数据透视表”。 这意味着某些工作表已分组(同时选择)。如果您将第二个工作表设置为 Activity 工作表并且不取消选择第一个工作表,则情况如此。然后两张纸都被选中。

这样做:

workbook.getSheetAt(0).setSelected(false);
workbook.setActiveSheet(1);

...

workbook.setSheetVisibility(workbook.getSheetIndex(sheet),SheetVisibility.HIDDEN);

为什么在组编辑模式下渲染数据透视表失败的背景:

如果对多个工作表进行分组(同时选择),则其中一个分组工作表中的所有更改也会应用于所有选定的工作表。因此,数据透视表的呈现会更改单元格内容,也会更改其他选定工作表中的单元格内容。但这失败了。

关于java - 使用 Apache POI 生成的数据透视表隐藏 Excel 工作簿中的第一个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50893972/

相关文章:

excel - 从 VBA 搜索 Outlook 电子邮件

excel - 如何卡住Excel中的多行和多列?

java - 是否可以读取同一个 xlsx 文件中不同工作表的数据?

java - 如何解决Word文档中的包应包含内容类型部分[M1.13]

java - 如何检测文本已被轨道更改请求删除?

java - 当我滚动它时,会显示 Android 中的 ScrollView

java - 为 Hazelcast 配置 Java 客户端

java - 为什么 jruby 不关闭数据库连接?

java - logback 根本不记录到控制台

c# - 使用内存流从 URL 读取 Excel