【问题标题】:Hiding first sheet in excel workbook with pivot tables generated using Apache POI隐藏 Excel 工作簿中的第一张工作表,其中包含使用 Apache POI 生成的数据透视表
【发布时间】:2018-06-17 05:29:05
【问题描述】:

我使用 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 配合得很好。

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

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

我怎样才能做到这一点?

【问题讨论】:

    标签: java excel apache-poi


    【解决方案1】:

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

    这样做:

    workbook.getSheetAt(0).setSelected(false);
    workbook.setActiveSheet(1);
    
    ...
    
    workbook.setSheetVisibility(workbook.getSheetIndex(sheet),SheetVisibility.HIDDEN);
    

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

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

    【讨论】:

    • 谢谢先生。您对错误消息是正确的,每当发生这种情况时,我都可以看到两张纸被选中。 setSelected 正是我正在寻找的解决方案。干杯
    猜你喜欢
    • 1970-01-01
    • 2017-11-22
    • 2016-09-09
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多