我有一个程序,可以生成包含大量数据的报告 . 我使用Apache POI SXSSF正常工作以生成xlsx文件 . http://poi.apache.org/spreadsheet/index.html
我在他们的文档中找不到的是如何用密码保护 ENTIRE WORKBOOK . 我想要它,以便如果有人试图打开文件,他们需要输入密码才能看到数据 .
请记住,这与密码保护 a single worksheet 不同,它们仍然可以打开文件并查看数据但具有只读访问权限 .
我在SXSSFWorkbook文档中找不到任何内容:https://poi.apache.org/apidocs/org/apache/poi/xssf/streaming/SXSSFWorkbook.html
看起来有一种名为setWorkbookPassword的XSSFWorkbook方法,但是它不能在SXSSFWorkbook上工作 . https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html#setWorkbookPassword(java.lang.String,%20org.apache.poi.poifs.crypt.HashAlgorithm)
任何人都知道如何做到这一点?还将考虑替代解决方法 .
提前致谢 .
UPDATE
我想过可能会使用支持宏的工作簿和脚本来密码保护它,如此处所示 . Java Apache Poi SXSSF with Excel Macros
我使用这里的VBA代码来做到这一点:http://analysistabs.com/excel-vba/protect-unprotect-workbook/然后在创建Excel文件时使用该文件作为模板但是当我玩宏时它发现它是不够的 . 一些计算机安全设置被设置为"High"并将禁用宏,所以当我打开文件时,我确实得到了密码提示,但后来我还收到一条警告消息,说明宏被禁用,我能够查看工作簿内容 .
有什么建议?
1 回答
你在poi主页的左侧菜单中看到了菜单项"Encryption support"吗?
打开(即读取)文件时请求密码提示,您需要对其进行加密 - 请参阅"XML-based formats - Encryption"
并且stackoverflow喜欢在一个地方拥有所有东西 - 这是代码: