我正在开发一个简单的Java程序来使用(Apache POI)API创建一个Excel文件 . 我使用Oracle 10g作为数据库并使用ojdbc14 JAR文件 .
我有一个名为USERINFO的表,有三列,即 USERNAME
, PASSWORD
和 NAME.
现在使用Apache POI,我已经能够将所有行放在Excel文件中 .
由于该文件包含敏感数据,如用户名和密码,我想让它受密码保护 . 在论坛上,我发现了如何读取受密码保护的文件,而不是如何创建它们 . 那我怎么能做到这一点?
3 回答
Updated: 自版本3.10起,POI支持XLSX文件的加密和解密 . 见the "Encryption Support" page on POI's website . 以下内容仍与XLS二进制工作簿相关 .
如果您愿意为商业软件付费,最新版本的ExtenXLS对Excel支持的所有加密格式都具有完全读写支持 . 只需构造一个
EncryptedWorkBookHandle
而不是正常的WorkBookHandle
. 这将使用未经修改的JRE支持的最强密码,用于XLS的RC4和用于XLSX的128位AES . 如果你想使用256位AES和OOXML,你已经安装了JCE unlimited policy,你可以使用MSOfficeEncrypter
类 .JExcelAPI,一种流行的开源Java电子表格API,似乎根本不支持加密 . Aspose.Cells,商业产品,supports stong encryption . Actuate 's e.Spreadsheet seems to have disappeared from the ' net的文档,所以我不知道它是否支持加密 .
由于所有免费提供的Java电子表格API似乎都不支持编写加密电子表格,因此如果您需要提供解决方法 . 例如,您可以将电子表格写入加密的ZIP文件中 .
java.util.zip
不支持加密,但看起来像Zip4j .Full disclosure :我在ExtenXLS工作,ExtenXLS背后的公司 .
创建受密码保护的Excel文件或使用现有模板并使其受密码保护 . 这将为用户提供“只读”访问权限 . 这是一个例子,我有一个密码为“秘密”的Excel文件:
您应该能够编写或修改现有模板的方式相同 . 完成后,覆盖模板 . 如果您的模板应该多次使用,您可能希望将模板复制到其他位置,然后使用代码进行修改 .
我经常发现POI要做更复杂的事情,一个有用的方法是使用高级功能(例如宏)在Excel中创建电子表格,然后使用POI读取电子表格,填充并写出来 . POI通常会维护电子表格功能并添加数据 .
我没有试过这个用于密码,但我怀疑它值得一个实验 .
有关详细信息,请参阅busy developer's guide .