【发布时间】:2017-09-25 05:54:16
【问题描述】:
我在 Java 中为 Excel 使用 Apache POI 库。我需要用密码打开 xlsx 文件。为什么我有这个错误:“线程“主”org.apache.poi.EncryptedDocumentException 中的异常:导出限制到位 - 请安装 JCE 无限强度管辖策略文件”。我尝试安装此文件。但这并没有解决问题。
public static void ReadFromExcell(String file) throws IOException, GeneralSecurityException {
String excelFilePath = "ServerList.xlsx";
try {
NPOIFSFileSystem fileSystem = new NPOIFSFileSystem(new File(excelFilePath));
EncryptionInfo info = new EncryptionInfo(fileSystem);
Decryptor decryptor = Decryptor.getInstance(info);
if (!decryptor.verifyPassword("qwerty")) {
System.out.println("Unable to process: document is encrypted.");
return;
}
InputStream dataStream = decryptor.getDataStream(fileSystem);
Workbook workbook = new XSSFWorkbook(dataStream);
Sheet firstSheet = workbook.getSheetAt(0);
Iterator<Row> iterator = firstSheet.iterator();
while (iterator.hasNext()) {
Row nextRow = iterator.next();
Iterator<Cell> cellIterator = nextRow.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
System.out.print(cell.getStringCellValue() + "\t");
}
System.out.println();
}
workbook.close();
dataStream.close();
fileSystem.close();
} catch (GeneralSecurityException | IOException ex) {
ex.printStackTrace();
}
}
【问题讨论】:
-
正确安装策略文件并遵循 Oracle 文档以确保它们安装正常时会发生什么?
-
我下载了正确的8版本java的必要jar文件。然后我替换了
c:\program files\java\jre\lib\security中的文件,没有任何改变(((也许我应该尝试重新安装jre?
标签: java excel passwords apache-poi xlsx