2015-08-04 7 views
0

Я сделал два класса, используя apache poi, который читает и записывает файлы excel, необходимые для процесса. Эти файлы excel зашифровываются паролем, используя книгу защиты. Работа шифрования и считыватель excel не принимают неправильные входные данные (если вы вручную задали пароль в MS excel). Однако файлы excel, созданные автором Excel, который должен быть зашифрован паролем, не работают. Когда читатель считывает сгенерированный файл excel, он принимает любой пароль и может получать данные внутри файла excel. Но когда вы вручную открываете файл excel через MS excel, он зашифровывается паролем.Неверный пароль, предоставленный для моего читателя excel, принимает сгенерированный файл excel writer

writeExcelWithFormula {

HSSFWorkbook workbook = new HSSFWorkbook(); 
    Sheet sheet = workbook.createSheet("Batch ACE"); 
    FileOutputStream fos = new FileOutputStream(fileName); 
    workbook.write(fos); 
    fos.close(); 
    encryptFile(fileName,employeeList); 

EncryptFile {

try {   

     fileInput = new FileInputStream(fileName);   
     bufferInput = new BufferedInputStream(fileInput);    
     poiFileSystem = new POIFSFileSystem(bufferInput);    

     Biff8EncryptionKey.setCurrentUserPassword("password");    
     HSSFWorkbook workbook = new HSSFWorkbook(poiFileSystem, true);    
     HSSFSheet sheet = workbook.getSheetAt(0); 
     sheet.setDefaultColumnWidth(25); 

//create data.... 
     fileOut = new FileOutputStream(fileName); 
          workbook.writeProtectWorkbook(Biff8EncryptionKey.getCurrentUserPassword(), ""); 
     workbook.write(fileOut); 

Шифрование прекрасно работает вручную (открытие с помощью MS Excel). Я использую эти классы в bonita bpm. Я новичок с apache poi и благодарю вас за помощь bonita!

ответ

2

Как поясняется на Apache POI page on encryption support, поддержка шифрования/защиты в HSSF для файлов .xls доступна только для чтения. Изменение или создание защищенных паролем файлов не поддерживается, только файлы с защитой .xls могут быть сгенерированы с помощью HSSF. Если вы откроете защищенный файл в HSSF и сохраните его, защита будет удалена.

Если вам необходимо создать защищенные/зашифрованные файлы Excel с помощью POI, то единственным вариантом является использование файлов XSSF и .xlsx. XSSF поддерживает как чтение, так и запись защищенных файлов, информацию о том, как сделать это на encryption support page