Ume*_*esh 13 java apache apache-poi
我想读取和写入受密码保护的Excel文件.如何使用Apache POI API执行此操作.
Gag*_*arr 16
POI应该能够打开两个受保护的xls文件(使用org.apache.poi.hssf.record.crypt)和受保护的xlsx文件(使用org.apache.poi.poifs.crypt).你试过这些吗?
如果您正在使用HSSF(对于xls文件),则需要在打开文件之前设置密码.您通过以下呼叫执行此操作:
org.apache.poi.hssf.record.crypto.Biff8EncryptionKey.setCurrentUserPassword(password);
Run Code Online (Sandbox Code Playgroud)
之后,HSSF应该能够打开您的文件.
对于XSSF,您需要以下内容:
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("protect.xlsx"));
EncryptionInfo info = new EncryptionInfo(fs);
Decryptor d = new Decryptor(info);
d.verifyPassword(Decryptor.DEFAULT_PASSWORD);
XSSFWorkbook wb = new XSSFWorkbook(d.getDataStream(fs));
Run Code Online (Sandbox Code Playgroud)
.
或者,在较新版本的Apache POI中,WorkbookFactory支持在打开时提供密码,因此您可以执行以下操作:
Workbook wb = WorkbookFactory.create(new File("protected.xls"), "password"));
Run Code Online (Sandbox Code Playgroud)
这对HSSF和XSSF都有效,根据格式选择正确的,并以适当的格式传递给定的密码.
如果整个工作簿受密码保护(通过 Excel 菜单“文件”>“另存为...”>“工具”>“常规选项...”,然后提供密码),则文件将被加密,您无法通过以下方式读取和写入工作簿兴趣点。

| 归档时间: |
|
| 查看次数: |
15688 次 |
| 最近记录: |