错误“安装JCE无限强度管辖权策略文件";
问题描述:
我在Java中将Apache POI库用于Excel.我需要用密码打开xlsx文件.为什么出现此错误:线程主"中的异常org.apache.poi.EncryptedDocumentException:导出限制到位-请安装JCE无限强度管辖权策略文件".我尝试安装此文件.但这并不能解决问题.
I use Apache POI library for Excel in java. I need open xlsx file with password. Why I have this error: "Exception in thread "main" org.apache.poi.EncryptedDocumentException: Export Restrictions in place - please install JCE Unlimited Strength Jurisdiction Policy files". I tryed install this files. But this didn't solve the problem.
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();
}
}
答
我找到了解决该问题的方法.我只替换了"jre"文件夹中的文件.还有必要替换文件夹"jdk"中的文件.
I found a solution to the problem. I replaced the files only in the folder "jre". It is also necessary to replace the files in the folder "jdk".