使用 LibreOffice 打开生成的 XLSX 文件时,XSSFWorkbook.lockStructure() 不起作用

问题描述 投票:0回答:1

我正在创建一个受保护的 XLSX 文件,如下所示:

XSSFWorkbook wb = new XSSFWorkbook();
wb.lockStructure();
wb.setWorkbookPassword(PASSWORD, null);

当我打开 Excel 生成的文件时,我检查它是否受到正确保护。但是,在 LibreOffice 中打开它时,该文件不受保护,允许编辑结构。

如何为 LibreOffice 保护它?这是 POI 或 LibreOffice 中的错误吗?

excel apache-poi libreoffice
1个回答
0
投票

这不是错误,而是使用 OpenOffice 或 LibreOffice Calc 的 Office Open XML

*.xlsx
文件格式时的缺点。

OpenOffice 或 LibreOffice Calc 的本机文件格式是电子表格的开放文档格式

*.ods
。此格式存储 保护电子表格结构,与 Office Open XML
*.xlsx
存储保护工作簿结构不同。因此,在打开
Protect the workbook structure
文件时,OpenOffice 或 LibreOffice Calc 将无法读取
*.xlsx
的设置。

有人可能会想:使用 OpenOffice 或 LibreOffice Calc 设置

Protect Spreadsheet Structure
然后将该文件另存为
*.xlsx
怎么样?但这将省略
Protect Spreadsheet Structure
,因为 Office Open XML
*.xlsx
无法存储它。您会看到,如果您在另存为
*.xlsx
后关闭文件,然后在 Calc 中重新打开它。
Protect Spreadsheet Structure
不见了。

OpenOffice 和 LibreOffice 在以 Office Open XML 文件格式保存文件时警告这些缺点,并建议改用开放文档格式。

© www.soinside.com 2019 - 2024. All rights reserved.