错误“安装JCE无限强度管辖权策略文件";

错误“安装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".