我正在创建一个受保护的 XLSX 文件,如下所示:
XSSFWorkbook wb = new XSSFWorkbook();
wb.lockStructure();
wb.setWorkbookPassword(PASSWORD, null);
当我打开 Excel 生成的文件时,我检查它是否受到正确保护。但是,在 LibreOffice 中打开它时,该文件不受保护,允许编辑结构。
如何为 LibreOffice 保护它?这是 POI 或 LibreOffice 中的错误吗?
这不是错误,而是使用 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 文件格式保存文件时警告这些缺点,并建议改用开放文档格式。