POI должен иметь возможность открывать как защищенные файлы xls (используя org.apache.poi.hssf.record.crypt ), так и защищенные файлы xlsx (используя org.apache.poi.poifs. крипты ). Вы пробовали это?
Если вы используете HSSF (для файла xls), вам необходимо установить пароль перед открытием файла. Вы делаете это с помощью вызова:
org.apache.poi.hssf.record.crypto.Biff8EncryptionKey.setCurrentUserPassword(password);
После этого HSSF сможет открыть ваш файл.
Для XSSF вам нужно что-то вроде:
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("protect.xlsx"));
EncryptionInfo info = new EncryptionInfo(fs);
Decryptor d = new Decryptor(info);
d.verifyPassword(Decryptor.DEFAULT_PASSWORD);
XSSFWorkbook wb = new XSSFWorkbook(d.getDataStream(fs));
.
Альтернативно, в более новых версиях Apache POI WorkbookFactory поддерживает ввод пароля при открытии , поэтому вы можете просто сделать что-то вроде:
Workbook wb = WorkbookFactory.create(new File("protected.xls"), "password"));
Это будет работать как для HSSF, так и для XSSF, выбирая правильный пароль в зависимости от формата и передавая заданный пароль соответствующим образом для формата.