POI 加密Excel文件


 

今天遇到一個業務,需要為Excel 文件加密后發送郵件給客戶,Excel文件需要使用密碼才能打開。

在網上查了一輪后發現官網有相應的例子可以參考,可以看官網資料(參考http://poi.apache.org/encryption.html)。

 

下面的例子只能支持Excel 2007文件

        //Add password protection and encrypt the file
        final POIFSFileSystem fs = new POIFSFileSystem();
        final EncryptionInfo info = new EncryptionInfo(EncryptionMode.standard);
        //final EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile, CipherAlgorithm.aes256, HashAlgorithm.sha256, -1, -1, null);
        final Encryptor enc = info.getEncryptor();

        //set the password
        enc.confirmPassword("abcdef");

        //encrypt the file
        final OPCPackage opc = OPCPackage.open(new File(path), PackageAccess.READ_WRITE);
        final OutputStream os = enc.getDataStream(fs);
        opc.save(os);
        opc.close();

        //save the file back to the filesystem
        final FileOutputStream fos = new FileOutputStream(path);
        fs.writeFilesystem(fos);
        fos.close();

  這里可選的EncryptionMode有多種,本人簡單測試,只有EncryptionMode.standard、EncryptionMode.binaryRC4可以不需要其它參數就加密成功。

用EncryptionMode.agile 加密則打開Excel 文件還是有問題(可以不輸入密碼打開文件,文件無內容)。而官網寫着binaryRC4是不安全。需要繼續看文檔或者研究才能斷續。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM