Java POI-设置表非常隐蔽,不起作用

Java POI-设置表非常隐蔽,不起作用,java,apache-poi,Java,Apache Poi,我正在使用POI库对XLS文件编写一些Java代码。我正在尝试将一些工作表设置为非常隐藏,以便用户根本无法访问它们 非常隐藏表单的定义 代码 // Creates and hides a sheet HSSFWorkbook workbook = new HSSFWorkbook(inputStream); HSSFSheet hiddenSheet = workbook.createSheet(sheetName); workbook.setSheetHidd

我正在使用POI库对XLS文件编写一些Java代码。我正在尝试将一些工作表设置为非常隐藏,以便用户根本无法访问它们

非常隐藏表单的定义

代码

    // Creates and hides a sheet
    HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
    HSSFSheet hiddenSheet = workbook.createSheet(sheetName);
    workbook.setSheetHidden(workbook.getSheetIndex(sheetName), HSSFWorkbook.SHEET_STATE_VERY_HIDDEN);
问题

不幸的是,当我打开生成的Excel文件时,我试图隐藏的工作表显示为隐藏,但用户仍然可以使用“格式->工作表->显示”选项访问它们


感谢您的帮助。

如果您不希望用户访问您的工作表,则必须在将其设置为非常隐藏之前对其进行密码保护:

    workbook.getSheetAt(0).protectSheet("abc");
    workbook.setSheetHidden(0, HSSFWorkbook.SHEET_STATE_VERY_HIDDEN);

希望它能有所帮助

如API中所述,请注意,当前设置为活动工作表的工作表(新创建工作簿中的工作表0或通过setActiveSheet()设置的工作表)无法隐藏。谢谢@MatteoBaldi,我更新了我的问题以使其更清楚。这些工作表是隐藏的,但是可以通过Format->Sheet->Show选项向用户显示。您使用的是什么版本的Apache POI?如果不是最新版本,升级时会发生什么情况?我使用的是版本3.15.1。已弃用-使用工作簿.setSheetVisibility(0,SheetVisibility.VERY_HIDDEN);