2017-04-27 41 views
-1

我在java中使用Apache POI库for Excel。我需要用密码打开xlsx文件。为什么我有这个错误:“线程中的异常”主要“org.apache.poi.EncryptedDocumentException:导出限制 - 请安装JCE无限强度管辖权策略文件”。我尝试安装这些文件。但是这并没有解决问题。错误“安装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(); 
    } 
} 

enter image description here

+0

当您正确安装策略文件并按照Oracle文档确保它们安装正常时会发生什么? – Gagravarr

+0

我下载了正确的8版java的必要jar文件。然后我替换'c:\ program files \ java \ jre \ lib \ security'中的文件,但没有任何更改(((也许我应该尝试重新安装jre? –

回答

0

我找到了一个解决问题的办法。我只在文件夹“jre”中替换了文件。还需要替换文件夹“jdk”中的文件。