我正在开发一个简单的 Java 程序来使用 (Apache POI) API 创建 Excel 文件。
我使用 Oracle 10g 作为数据库并使用 ojdbc14 JAR 文件。
我有一个名为 USERINFO 的表,有三列,即USERNAME
, PASSWORD
, and NAME.
现在使用 Apache POI,我已经能够将所有行放入 Excel 文件中。
由于该文件包含用户名和密码等敏感数据,因此我想对其进行密码保护。
在论坛上,我找到了如何读取受密码保护的文件,但没有找到如何创建它们。
那么我怎样才能实现这一目标呢?
Updated:从 3.10 版开始,POI 支持 XLSX 文件的加密和解密。看POI 网站上的“加密支持”页面 http://poi.apache.org/encryption.html。以下内容仍然与 XLS 二进制工作簿相关。
根据POI 网站上的“加密支持”页面 http://poi.apache.org/encryption.htmlPOI支持读取加密的XLS和XLSX文件。该页面上没有提到加密,这意味着它不受支持。这得到了支持在 POI 网站上搜索“加密” http://www.google.com/search?q=site%3Apoi.apache.org+encrypt它只返回少数结果,所有这些结果都与解密有关。我还查看了他们的加密实现的来源,它似乎只处理解密。这并不奇怪; POI 旨在用于数据提取和搜索索引,而不是用于创建新的电子表格。
正如其他人所建议的,通常可以通过在 Excel 中创建模板,然后使用 POI 填充数据来解决 POI 中缺少的功能。不幸的是,这不适用于加密,因为加密电子表格的文件格式完全不同。
如果您愿意付费购买商业软件,最新版本的对 Excel 支持的所有加密格式具有完整的读写支持。只需构造一个EncryptedWorkBookHandle
而不是正常的WorkBookHandle
。这将使用未经修改的 JRE、XLS 的 RC4 和 XLSX 的 128 位 AES 支持的最强密码。如果您想将 256 位 AES 与 OOXML 结合使用并且您已经安装了JCE无限保单 http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html你可以这样做MSOfficeEncrypter
class.
JExcelAPI http://jexcelapi.sourceforge.net/,一种流行的开源 Java 电子表格 API,似乎根本不支持加密。Aspose.Cells http://www.aspose.com/categories/java-components/aspose.cells-for-java/default.aspx,商业产品,支持强加密 http://www.aspose.com/documentation/java-components/aspose.cells-for-java/setting-strong-encryption-type.html。 Actuate 的 e.Spreadsheet 的文档似乎已经从网络上消失了,所以我无法判断它是否支持加密。
由于免费提供的 Java 电子表格 API 似乎都不支持编写加密电子表格,因此如果您不愿意使用商业软件,则需要想出一个解决方法。例如,您可以将电子表格写入加密的 ZIP 文件中。java.util.zip
不支持加密,但看起来像Zip4j http://www.lingala.net/zip4j/ does.
全面披露:我在 Extentech 工作,这是 ExtenXLS 背后的公司。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)