【发布时间】:2017-04-15 08:54:53
【问题描述】:
我有一个程序可以生成包含大量数据的报告。我使用 Apache POI SXSSF 生成 xlsx 文件使事情正常工作。 http://poi.apache.org/spreadsheet/index.html
我在他们的文档中找不到的是如何用密码保护整个工作簿。我想要这样,如果有人试图打开文件,他们需要输入密码才能查看数据。
请记住,这不同于密码保护单个工作表,他们仍然可以打开文件并查看数据,但具有只读访问权限。
我在 SXSSFWorkbook 文档中没有找到任何内容:https://poi.apache.org/apidocs/org/apache/poi/xssf/streaming/SXSSFWorkbook.html
看起来有一种用于 XSSFWorkbook 的方法,称为 setWorkbookPassword,但 SXSSF 不存在该方法,并且不适用于 SXSSFWorkbook。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html#setWorkbookPassword(java.lang.String,%20org.apache.poi.poifs.crypt.HashAlgorithm)
任何人都知道如何做到这一点?也将考虑替代解决方法。
提前致谢。
更新
我考虑过可能使用启用宏的工作簿和脚本来按照此处的建议对其进行密码保护。 Java Apache Poi SXSSF with Excel Macros
我使用了这里的 VBA 代码:http://analysistabs.com/excel-vba/protect-unprotect-workbook/,然后在创建 Excel 文件时将该文件用作模板,但是当我在玩宏时发现它还不够。一些计算机安全设置被设置为“高”并且会禁用宏,所以当我打开文件时,我确实收到了密码提示,但是我也收到了一条警告消息,说宏被禁用并且我能够查看工作簿内容。
有什么建议吗?
【问题讨论】:
标签: java excel apache-poi xlsx password-protection