Java Excel文件加密保護(hù)數(shù)據(jù)安全
前言
Excel文件保護(hù)是常用的一種功能,文件保護(hù)主要有三種:
- 添加密碼,如果沒有密碼不允許打開文件。
- 添加密碼,如果沒有密碼,不能修改文件,但可以打開,只讀以及另存文件。
- 只讀推薦,通常推薦打開Excel文件的用戶使用只讀模式打開,這種方式僅是一種提示,并非強(qiáng)行保護(hù)文件。
給Excel添加保護(hù)
情況1:
下面的代碼將展示如何打開名為 "test.xlsx" 的 Excel 文件,并將其另存為 "password.xlsx"。在保存時(shí),使用 XlsxSaveOptions 對(duì)象將密碼設(shè)置為 "123456",以確保數(shù)據(jù)的安全性。
Workbook wb = new Workbook(); wb.open("test.xlsx"); XlsxSaveOptions options = new XlsxSaveOptions(); options.setPassword("123456"); wb.save("password.xlsx", options);
情況2:
與情況1一樣,打開test.xlsx文件,并添加只讀型密碼,同時(shí)修改密碼設(shè)置人的信息。
Workbook wb = new Workbook(); wb.open("resources/test.xlsx"); wb.getWriteProtection().setWritePassword("123456"); wb.getWriteProtection().setWriteReservedBy("J123"); wb.save("output/readOnlyByPassword.xlsx");
打開“readOnlyByPassword.xlsx”時(shí),可以看到下圖:
情況3:
添加一個(gè)推薦只讀的設(shè)置給readonly.xlsx文件。
Workbook wb = new Workbook(); wb.open("test.xlsx"); wb.getWriteProtection().setReadOnlyRecommended(true); wb.save("output/readonly.xlsx");
給Excel解除保護(hù)
情況1:
移除Excel文件的密碼,代碼如下。
Workbook wb = new Workbook(); wb.open("output/password.xlsx", "123456"); wb.unprotect("123456"); wb.save("output/passwordUn.xlsx");
情況2:
移除Readonly寫保護(hù)。
Workbook wb = new Workbook(); XlsxOpenOptions option = new XlsxOpenOptions(); option.setPassword("123456"); wb.open("output/readOnlyByPassword.xlsx", option); wb.getWriteProtection().setWritePassword(null); wb.save("output/readOnlyByPasswordUn.xlsx");
情況3:
移除Readonly推薦設(shè)置
Workbook wb = new Workbook(); wb.open("resources/ErrorData.xlsx"); wb.getWriteProtection().setReadOnlyRecommended(false); wb.save("output/readonlyUn.xlsx");
總結(jié)
Java提供了一種方便而可靠的方法,可以為Excel文件添加保護(hù)以確保數(shù)據(jù)的安全性和完整性。通過這些工具,可以輕松地創(chuàng)建、編輯和保護(hù)Excel文件,并將其保存到本地磁盤或其他存儲(chǔ)設(shè)備中,
以上就是Java Excel文件加密保護(hù)數(shù)據(jù)安全的詳細(xì)內(nèi)容,更多關(guān)于Java Excel文件數(shù)據(jù)加密的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
關(guān)于IDEA配置Hibernate中遇到的問題解決
這篇文章主要給大家介紹了關(guān)于IDEA配置Hibernate中遇到的問題,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05springboot?Minio功能實(shí)現(xiàn)代碼
這篇文章主要介紹了springboot?Minio功能實(shí)現(xiàn),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07java中http請(qǐng)求之restTemplate配置超時(shí)時(shí)間問題解決
這篇文章主要介紹了java中http請(qǐng)求之restTemplate配置超時(shí)時(shí)間,本文給大家分享三種解決方法,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05Spring Boot 實(shí)現(xiàn)Restful webservice服務(wù)端示例代碼
這篇文章主要介紹了Spring Boot 實(shí)現(xiàn)Restful webservice服務(wù)端示例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11Java BigDecimal解決double精度丟失的問題
我們?cè)谌粘i_發(fā)中, 有很多時(shí)候會(huì)遇到小數(shù)(double類型)精確計(jì)算,本文主要介紹了Java BigDecimal解決double精度丟失的問題,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11關(guān)于@JsonProperty和@JSONField注解的區(qū)別及用法
這篇文章主要介紹了關(guān)于@JsonProperty和@JSONField注解的區(qū)別及用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08Java使用synchronized修飾方法來同步線程的實(shí)例演示
synchronized下的方法控制多線程程序中的線程同步非常方便,這里就來看一下Java使用synchronized修飾方法來同步線程的實(shí)例演示,需要的朋友可以參考下2016-06-06java數(shù)據(jù)結(jié)構(gòu)與算法之雙向循環(huán)隊(duì)列的數(shù)組實(shí)現(xiàn)方法
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之雙向循環(huán)隊(duì)列的數(shù)組實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了雙向循環(huán)隊(duì)列的原理與數(shù)組實(shí)現(xiàn)技巧,并附帶說明了該算法的用途,需要的朋友可以參考下2016-08-08