java - 受密码保护的 Excel 文件

标签 java excel apache-poi

我有一个受密码保护的 Excel 电子表格。我需要打开这个电子表格并从中读取数据。我一直在尝试使用 POI API 但无济于事。首选 Java 解决方案,但任何想法都会有所帮助。

编辑:是的,我有密码。该文件在 excel 中受密码保护;必须输入密码才能查看电子表格。

Edit2:我无法使用带有密码的 POI 打开它,我正在寻找替代解决方案。

最佳答案

POI 应该能够打开 protected xls 文件(使用 org.apache.poi.hssf.record.crypt)和 protected xlsx 文件(使用 org.apache.poi.poifs .crypt)。这些你试过吗?

如果您使用的是 HSSF(对于 xls 文件),您需要在打开文件之前设置密码。您可以通过调用以下方式执行此操作:

 org.apache.poi.hssf.record.crypto.Biff8EncryptionKey.setCurrentUserPassword(password);

之后,HSSF 应该能够打开您的文件。

对于 XSSF,你需要这样的东西:

    POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("protect.xlsx"));
    EncryptionInfo info = new EncryptionInfo(fs);
    Decryptor d = Decryptor.getInstance(info);
    d.verifyPassword(Decryptor.DEFAULT_PASSWORD);
    XSSFWorkbook wb = new XSSFWorkbook(d.getDataStream(fs));

完整的细节在 POI Encryption documentation page 上给出。

关于java - 受密码保护的 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2609301/

相关文章:

java - 如何实现姓名和出生年份的验证

excel - VBA Excel 二维数组

vba - 在excel电子表格之间复制信息的代码

java - Apache POI 编码格式适用于 MS excel 2010,但不适用于 excel 2003

java - 如何使用 Apache POI 设置数据透视表字段编号格式单元格

java - 在java中将类的实例存储在另一个类中

java - 捕获动态加载图像上的点击事件的最佳方法

java - JavaDocs 报告生成中发生错误 :Exit code: 1 - javadoc: error - invalid flag: -author

vba - Excel 2013 中的扩展工作表选择 - VBA

java - mvn 测试不适用于 Apache Poi