EncryptedDocumentException
сигнализирует о том, что вы пытаетесь обработать зашифрованный документ, который ранее не был «разблокирован».
Следующий фрагмент кода подходит для проверки того, имеет ли это место для форматов на основе XML ( .xlsx, .pptx, .docx, ... ), чтобы впоследствии можно было безопасно обрабатывать его :
String password = "secret"; // set password
File fileToProcess; // obtain/read/open the file here....
NPOIFSFileSystem filesystem = new NPOIFSFileSystem(fileToProcess);
EncryptionInfo info = new EncryptionInfo(filesystem);
Decryptor d = Decryptor.getInstance(info);
try {
if (!d.verifyPassword(password)) {
throw new RuntimeException("Unable to process: document is encrypted");
}
InputStream dataStream = d.getDataStream(filesystem);
// parse dataStream as the document is now processable from here on
// ...
} catch (GeneralSecurityException ex) {
throw new RuntimeException("Unable to process encrypted document", ex);
}
Приведенный выше пример взят из раздела шифрования официальной документации POI и был изменен в соответствии с JavaDoc проекта. Возможно, вы захотите проверить / прочитать JavaDoc классов Decryptor
и / или NPOIFSFileSystem
.
Если вы хотите преобразовать двоичные форматы файлов ( .xls, .ppt, .doc, ... ), проверьте раздел шифрования для примеров кода.
Надеюсь, это поможет.