【问题标题】:Structure lock in HSSFWorkbook possible?HSSFWorkbook 中的结构锁定可能吗?
【发布时间】:2021-09-09 14:45:10
【问题描述】:

在 POI XSSFWorkbook 中,存在可以保护 Excel 工作簿的方法 lockStructurelockWindows。 (“查看->保护工作簿...”下的 excel 菜单中的功能)
这些方法的作用类似于 Excel 中的 Workbook.protect 方法: https://docs.microsoft.com/en-us/office/vba/api/excel.workbook.protect

有没有办法在 HSSFWorkbook 中启用这种保护?

我已经尝试过 HSSFWorkbook 中的 writeProtectWorkbook 方法,但它与 XSSFWorkbook 中的方法不同。 writeProtectWorkbook 方法设置打开密码。

可能我必须修改第 200 页第 5.82 节中描述的“工作表保护块”:http://www.openoffice.org/sc/excelfileformat.pdf

有谁知道我怎样才能用 POI 获得这个块?
我用 poi:5.0.0。

【问题讨论】:

    标签: java excel apache-poi hssfworkbook


    【解决方案1】:

    我自己发现了如何启用工作簿保护。 InternalWorkbook 中有一个记录列表。其中包含记录类型 ProtectRecordWindowProtectRecordPasswordRecord。 使用这些您可以设置工作簿保护:

    List<Record> records = ((HSSFWorkbook) wb).getInternalWorkbook().getRecords();
    for (Record record : records) {
        if (record instanceof ProtectRecord) {
            ((ProtectRecord) record).setProtect(true);
        } else if (record instanceof WindowProtectRecord) {
            ((WindowProtectRecord) record).setProtect(true);
        } else if (record instanceof PasswordRecord) {
            ((PasswordRecord) record).setPassword((short) CryptoFunctions.createXorVerifier1("password"));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      相关资源
      最近更新 更多