POI-将工作表设置为非常隐藏不起作用 - java

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

非常隐藏的工作表的定义

http://www.kiranjholla.com/myblog/2010/03/the-very-hidden-sheet-in-excel.html

    // 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);

希望对您有所帮助

Apache POI背景颜色样式似乎不起作用 - java

晚上好!我在apache poi v.14版本中遇到了一些麻烦,当我使用Libreoffice或Excel打开渲染的xlsx时,样式未正确应用。我有以下代码:class... { private XSSFCellStyle doubleLockStyle; /** * Create default cell style. * * @param myWorkB…

Excel POI:当Excel少于135行时,“我们在…中发现了某些内容的问题” - java

使用POI创建Excel时,我的行为很奇怪。每当我的行数少于〜135时,我将无法打开Excel,但出现以下异常:如果我有更多行,则可以毫无问题地打开Excel。这是代码,我如何创建工作表:val out = new ByteArrayOutputStream() try { wb = createWorkbook() wb.writeToOutputStre…

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…