2015-01-30 3 views
0

Я использую Apache POI 3.11, который должен поддерживать файлы защиты Excel, защищающие паролем (как XLS, так и XLSX). Я легко мог получить шифрование типа XLSX для правильной работы с использованием POI, но я не смог сделать это со старым типом XLS. Я попытался использовать этот код, но все, что он делает, это создать копию файла без установки пароля. Насколько я могу судить по примерам и API, так оно и должно быть сделано, но я не могу заставить его работать.Защитить паролем файлы .XLS Excel с использованием Apache POI

HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(sourcePath)); 
    Biff8EncryptionKey.setCurrentUserPassword("potato"); 
    OutputStream os = new FileOutputStream(destinationPath); 
    wb.write(os); 
    os.flush(); 
    os.close(); 

Любые предложения будут оценены. В крайнем случае я могу, возможно, использовать другую библиотеку, но я бы предпочел использовать POI, поскольку это то, что мы используем для всего остального, связанного с Excel.

ответ

1

В соответствии с Apache POI Encryption Supported Features Matrix, HSSF поддерживает только дешифрование .xls файлов, защищенных известным паролем. Он не поддерживает шифрование. (XSSF может работать с шифрования и дешифрования .xlsx файлов)

Поэтому, если вы хотите поддерживать шифрование .xls файлы с HSSF Apache POI, вы должны будете get involved with the project, а затем работать над submitting a patch для этого отсутствует часть функциональности!