0

在 POI XSSFWorkbook中,存在可以保护 Excel 工作簿的方法lockStructurelockWindows 。(Excel菜单中“Review->Protect Workbook...”
下的功能)这些方法的功能类似于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。

4

1 回答 1

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"));
    }
}
于 2021-09-10T07:43:22.877 回答