在java中咱們經常都習慣用第三方插件:POI,jexcel來操做excel。 新需求,給excel加密。 百度上搜了一些。。都是很各類Ctrl+C,Ctrl+V的回答。給出的方法大同小異,以下:
POI:
hssfworkbook.writeProtectWorkbook("abc", "abc");
jexcel:
SheetSettings sh = ws.getSettings();
sh.setProtected(true);
sh.setPassword("abc");
上面兩種都僅僅只能是對excel經行頁面只讀設置保護密碼。不可以作到設置開啓密碼。 無法知足咱們真正加密excel需求。 只能本身去官方查看文檔內容。頁面下有相關連接, 發現這兩種excel插件,主要的做用仍是在解析excel上。 咱們沒法使用它對excel進行加密處理; 解決這個問題的辦法大概有兩種: 一、委婉點,直接生成excel後通壓縮爲加密的zip包解決;這個能夠用到zip4J方便處理 二、經過商業的excel軟件解決,好比jxcell、aspose等、還有其餘的一些能夠本身看下; 代碼以下:
jxcell:
View m_view = new View();
m_view.write("C:\\123.doc", "1234");
aspose:
// Instantiate a Workbook object.
Workbook workbook = new Workbook("F:\\test\\Book1.xls");
// Password protect the file.
workbook.getSettings().setPassword("1234");
// Specify Strong Encryption type (RC4,Microsoft Strong Cryptographic Provider).
workbook.setEncryptionOptions(EncryptionType.STRONG_CRYPTOGRAPHIC_PROVIDER, 128);
// Save the excel file.
workbook.save("F:\\test\\encryptedBook1.xls");
jacob這個插件也看了下,應該是隻支持第win32平臺 參考文檔 :
jexcel javadocs
Apache POI - Encryption support