使用Python實(shí)現(xiàn)對Excel文件加密與保護(hù)
在日常工作中,Excel 文件經(jīng)常存儲敏感信息,如財務(wù)報表、客戶信息、員工薪資、項目進(jìn)度等。一旦這些數(shù)據(jù)泄露或被誤操作,可能導(dǎo)致信息混亂甚至經(jīng)濟(jì)損失。手動設(shè)置密碼雖然能提供一定保護(hù),但面對大量文件或復(fù)雜需求,顯得繁瑣且容易出錯。
使用 Python 可以輕松實(shí)現(xiàn)自動化保護(hù),本文介紹如何利用 Spire.XLS for Python 對 Excel 文件進(jìn)行加密與保護(hù),讓我們能夠更安全、高效地管理 Excel 數(shù)據(jù)。
為什么選擇 Spire.XLS for Python
Python 處理 Excel 的庫很多,如 openpyxl、pandas 等,但它們在文件加密、工作表保護(hù)等高級功能上有限。相比之下,Spire.XLS for Python 的優(yōu)勢包括:
- 功能豐富:支持文件加密、工作表保護(hù)、單元格鎖定、格式保護(hù)等。
- 易于使用:API 簡單直觀,開發(fā)者可以用少量代碼實(shí)現(xiàn)復(fù)雜保護(hù)。
- 兼容性強(qiáng):支持
.xls、.xlsx、.csv等多種格式。 - 適合企業(yè)應(yīng)用:性能穩(wěn)定,適合處理大量文件和敏感數(shù)據(jù)。
在開始前,請使用以下命令安裝Spire.XLS:
pip install spire.xls
文件級加密
設(shè)置打開密碼(Document-Open Password)
我們經(jīng)常希望自己的 Excel 文件在沒有授權(quán)的情況下無法被打開。為文件設(shè)置打開密碼是最直接的方式。只要有人嘗試打開文件,沒有密碼就無法查看內(nèi)容,非常適合共享敏感信息。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
# 設(shè)置打開密碼
workbook.Protect("PasswordToOpen")
# 保存加密后的文件
workbook.SaveToFile("OpenPasswordProtected.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("文件已加密,打開時需要輸入 'PasswordToOpen'")
設(shè)置修改密碼(Document-Modify Password)
有時候我們希望他人可以查看文件內(nèi)容,但只有特定的人能修改。通過設(shè)置修改密碼,Excel 會要求用戶輸入密碼才能編輯文件,否則只能以只讀方式打開。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
# 設(shè)置修改密碼
workbook.SetWriteProtectionPassword("PasswordToModify")
workbook.SaveToFile("ModifyPasswordProtected.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("文件已加密,修改需要 'PasswordToModify'")
標(biāo)記為最終版本(Mark as Final)
有時候我們只想提醒別人不要修改文件,而不是強(qiáng)制禁止。這時可以把 Excel 文件標(biāo)記為最終版本,打開時會顯示提示信息,提醒用戶文件已經(jīng)完成。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
# 添加自定義屬性標(biāo)記文件為最終版本
workbook.CustomDocumentProperties.Add("_MarkAsFinal", True)
workbook.SaveToFile("MarkAsFinal.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("文件已標(biāo)記為最終版本")
工作表保護(hù)
保護(hù)整個工作表
有些情況下,我們希望防止任何人修改整個工作表。這樣,表格里的數(shù)據(jù)和公式都能得到保護(hù)。我們可以通過設(shè)置密碼來保護(hù)整個工作表,只有知道密碼的人才能解除保護(hù)。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
sheet = workbook.Worksheets[0]
# 設(shè)置保護(hù)密碼
sheet.Protect("SheetPassword", SheetProtectionType.none)
workbook.SaveToFile("ProtectWorksheet.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("工作表已保護(hù)")
允許特定單元格可編輯
有時候我們希望保護(hù)工作表的大部分內(nèi)容,但又讓別人填寫指定區(qū)域,例如數(shù)據(jù)錄入模板中讓用戶輸入數(shù)據(jù)而不改動表頭和公式??梢韵榷x可編輯的單元格范圍,再保護(hù)工作表。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
sheet = workbook.Worksheets[0]
# 指定可編輯單元格范圍
sheet.AddAllowEditRange("EditableRange1", sheet.Range["B2:E11"])
# 保護(hù)工作表
sheet.Protect("SheetPassword", SheetProtectionType.none)
workbook.SaveToFile("AllowEditingRanges.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("工作表已保護(hù),指定范圍可編輯")
鎖定特定單元格或范圍
有時候工作表中某些單元格存放公式或關(guān)鍵數(shù)據(jù),需要避免被修改。我們可以先把所有單元格解鎖,然后再鎖定需要保護(hù)的區(qū)域,最后保護(hù)工作表,這樣其他區(qū)域仍然可編輯。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
sheet = workbook.Worksheets[0]
# 解鎖所有單元格
for cell in sheet.Cells:
cell.Style.Locked = False
# 鎖定特定單元格范圍
sheet.Range["A1:E1"].Style.Locked = True
# 保護(hù)工作表
sheet.Protect("SheetPassword", SheetProtectionType.none)
workbook.SaveToFile("LockSpecificCells.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("特定單元格已鎖定")
鎖定特定行和列
如果你希望保護(hù)關(guān)鍵行或列,例如表頭或敏感列,可以先解鎖所有單元格,再鎖定需要保護(hù)的行列,然后保護(hù)工作表。這樣既能保證重要信息不被修改,也能讓其他區(qū)域繼續(xù)可編輯。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
sheet = workbook.Worksheets[0]
# 解鎖所有單元格
for cell in sheet.Cells:
cell.Style.Locked = False
# 鎖定第一行(表頭)
sheet.Rows[0].Style.Locked = True
# 鎖定第一列(關(guān)鍵列)
sheet.Columns[0].Style.Locked = True
# 保護(hù)工作表
sheet.Protect("SheetPassword", SheetProtectionType.none)
workbook.SaveToFile("LockSpecificRowAndColumn.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("特定行和列已鎖定")
總結(jié)
通過本文的示例,我們可以使用 Spire.XLS for Python:
- 對整個文件加密(打開密碼和修改密碼)
- 標(biāo)記為最終版本,防止誤操作
- 保護(hù)整個工作表
- 允許指定區(qū)域可編輯
- 鎖定特定單元格、行或列
這些方法可以組合使用,為 Excel 文件建立多層保護(hù)機(jī)制,讓你在共享和協(xié)作時更放心。同時,Python 自動化處理可以節(jié)省大量手動設(shè)置時間,避免操作失誤。
到此這篇關(guān)于使用Python實(shí)現(xiàn)對Excel文件加密與保護(hù)的文章就介紹到這了,更多相關(guān)Python Excel文件加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pandas按條件篩選數(shù)據(jù)的實(shí)現(xiàn)
這篇文章主要介紹了pandas按條件篩選數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
tensorflow通過模型文件,使用tensorboard查看其模型圖Graph方式
今天小編就為大家分享一篇tensorflow通過模型文件,使用tensorboard查看其模型圖Graph方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
No module named 'plotly.graph_objects&ap
這篇文章主要為大家介紹了No module named 'plotly.graph_objects'報錯解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
解決Python pandas df 寫入excel 出現(xiàn)的問題
今天小編就為大家分享一篇解決Python pandas df 寫入excel 出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Python常見MongoDB數(shù)據(jù)庫操作實(shí)例總結(jié)
這篇文章主要介紹了Python常見MongoDB數(shù)據(jù)庫操作,結(jié)合實(shí)例形式詳細(xì)總結(jié)了Python針對MongoDB數(shù)據(jù)庫相關(guān)pymongo庫安裝以及MongoDB數(shù)據(jù)庫的增刪改查等相關(guān)操作技巧與注意事項,需要的朋友可以參考下2018-07-07
Python itertools.product方法代碼實(shí)例
這篇文章主要介紹了Python itertools.product方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03

