最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python保護(hù)和取消保護(hù)Excel工作表和工作簿的完整代碼

 更新時(shí)間:2026年07月07日 08:26:36   作者:用戶835629078051  
在企業(yè)數(shù)據(jù)管理和報(bào)表分發(fā)場(chǎng)景中,Excel 文件往往包含敏感信息或關(guān)鍵公式,需要防止未經(jīng)授權(quán)的修改,本文將介紹如何使用 Python 對(duì)工作表進(jìn)行密碼保護(hù)、鎖定特定單元格和行列、設(shè)置可編輯區(qū)域、隱藏公式以及解除保護(hù),感興趣的小伙伴可以了解下

在企業(yè)數(shù)據(jù)管理和報(bào)表分發(fā)場(chǎng)景中,Excel 文件往往包含敏感信息或關(guān)鍵公式,需要防止未經(jīng)授權(quán)的修改。手動(dòng)為每個(gè)工作表設(shè)置保護(hù)密碼在文件數(shù)量較少時(shí)可行,但面對(duì)批量處理或自動(dòng)化生成報(bào)表的需求,這種方式顯然不夠高效。

通過(guò) Python 編程實(shí)現(xiàn) Excel 工作表和工作簿的保護(hù)與解保護(hù),可以將安全策略無(wú)縫集成到文檔生成和分發(fā)流程中。本文將介紹如何使用 Python 對(duì)工作表進(jìn)行密碼保護(hù)、鎖定特定單元格和行列、設(shè)置可編輯區(qū)域、隱藏公式,以及解除保護(hù)。

環(huán)境準(zhǔn)備

本文使用 Spire.XLS for Python 庫(kù)操作 Excel 文件,通過(guò) pip 安裝:

pip install Spire.XLS

在腳本中導(dǎo)入所需模塊:

from spire.xls import *
from spire.xls.common import *

保護(hù)工作表的基礎(chǔ)概念

Excel 的保護(hù)機(jī)制分為兩個(gè)層級(jí):

  • 工作表保護(hù):限制對(duì)工作表中單元格內(nèi)容的編輯,可以設(shè)置密碼,也可以選擇性地允許某些操作(如排序、篩選等)。
  • 工作簿保護(hù):限制對(duì)工作簿結(jié)構(gòu)的修改,防止用戶添加、刪除或重命名工作表。

在 Spire.XLS 中,工作表保護(hù)通過(guò) Protect() 方法實(shí)現(xiàn),工作簿保護(hù)則通過(guò) Workbook.Protect() 方法實(shí)現(xiàn)。每個(gè)單元格都有一個(gè) Locked 屬性,默認(rèn)情況下所有單元格都是鎖定狀態(tài),但只有在啟用工作表保護(hù)后,鎖定才會(huì)生效。

保護(hù)工作表

最簡(jiǎn)單的保護(hù)方式是為整個(gè)工作表設(shè)置密碼。啟用保護(hù)后,所有單元格默認(rèn)處于鎖定狀態(tài),用戶無(wú)法編輯任何內(nèi)容:

from spire.xls import *
from spire.xls.common import *

# 創(chuàng)建工作簿并加載文件
workbook = Workbook()
workbook.LoadFromFile("input.xlsx")

# 獲取第一個(gè)工作表
sheet = workbook.Worksheets[0]

# 使用密碼保護(hù)工作表
sheet.Protect("MyPassword", SheetProtectionType.All)

# 保存文檔
workbook.SaveToFile("ProtectSheet.xlsx", ExcelVersion.Version2013)
workbook.Dispose()

SheetProtectionType.All 表示禁止所有操作。也可以根據(jù)需要選擇更細(xì)粒度的保護(hù)類型,如僅禁止插入行、刪除列等特定操作。

鎖定特定單元格

在多數(shù)場(chǎng)景中,并不需要鎖定所有內(nèi)容,而是只保護(hù)關(guān)鍵的公式單元格或匯總數(shù)據(jù)。實(shí)現(xiàn)這一目標(biāo)的關(guān)鍵在于:先將所有單元格設(shè)為未鎖定,再將需要保護(hù)的單元格設(shè)為鎖定,最后啟用工作表保護(hù)。

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
workbook.LoadFromFile("input.xlsx")
sheet = workbook.Worksheets[0]

# 將 B3 單元格設(shè)為鎖定
sheet.Range["B3"].Style.Locked = True

# 將 C3 單元格設(shè)為未鎖定(即使工作表受保護(hù)也可編輯)
sheet.Range["C3"].Style.Locked = False

# 啟用工作表保護(hù)
sheet.Protect("TestPassword", SheetProtectionType.All)

workbook.SaveToFile("LockSpecificCells.xlsx", ExcelVersion.Version2013)
workbook.Dispose()

這種方式適用于表單類文檔——大部分字段允許用戶填寫(xiě),只有公式和標(biāo)題等關(guān)鍵區(qū)域需要保護(hù)。

鎖定特定行或列

當(dāng)需要保護(hù)整行或整列數(shù)據(jù)時(shí),可以通過(guò)遍歷設(shè)置行或列的鎖定狀態(tài)。以下示例先解鎖所有行,然后僅鎖定第 3 行:

workbook = Workbook()
workbook.CreateEmptySheet()
sheet = workbook.Worksheets[0]

# 解鎖所有行
for i in range(0, 255):
    sheet.Rows[i].Style.Locked = False

# 鎖定第 3 行
sheet.Rows[2].Text = "Locked"
sheet.Rows[2].Style.Locked = True

# 啟用保護(hù)
sheet.Protect("123", SheetProtectionType.All)

workbook.SaveToFile("LockSpecificRow.xlsx", ExcelVersion.Version2013)

鎖定特定列的方式類似,以下示例鎖定第 4 列(D 列):

workbook = Workbook()
workbook.CreateEmptySheet()
sheet = workbook.Worksheets[0]

# 解鎖所有行
for i in range(0, 255):
    sheet.Rows[i].Style.Locked = False

# 鎖定第 4 列
sheet.Columns[3].Text = "Locked"
sheet.Columns[3].Style.Locked = True

# 啟用保護(hù)
sheet.Protect("123", SheetProtectionType.All)

workbook.SaveToFile("LockSpecificColumn.xlsx", ExcelVersion.Version2013)

設(shè)置可編輯區(qū)域

另一種更靈活的方式是在保護(hù)工作表的同時(shí),指定某些區(qū)域?yàn)?quot;允許編輯范圍"。用戶可以在這些區(qū)域內(nèi)自由編輯,而工作表其他部分仍然受保護(hù):

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
workbook.LoadFromFile("input.xlsx")
sheet = workbook.Worksheets[0]

# 定義允許編輯的區(qū)域
sheet.AddAllowEditRange("EditableRanges", sheet.Range["B4:E12"])

# 保護(hù)工作表
sheet.Protect("TestPassword", SheetProtectionType.All)

workbook.SaveToFile("ProtectedWithEditableRange.xlsx", ExcelVersion.Version2013)
workbook.Dispose()

AddAllowEditRange() 方法接受兩個(gè)參數(shù):區(qū)域名稱和區(qū)域范圍。這種方式比逐個(gè)設(shè)置單元格的 Locked 屬性更加直觀,特別適合需要在受保護(hù)表格中開(kāi)放數(shù)據(jù)錄入?yún)^(qū)域的場(chǎng)景。

保護(hù)工作簿結(jié)構(gòu)

除了工作表級(jí)別的保護(hù),還可以對(duì)工作簿整體結(jié)構(gòu)進(jìn)行保護(hù),防止用戶添加、刪除或重命名工作表:

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
workbook.LoadFromFile("input.xlsx")

# 保護(hù)工作簿結(jié)構(gòu)
workbook.Protect("e-iceblue")

workbook.SaveToFile("ProtectWorkbook.xlsx", ExcelVersion.Version2013)
workbook.Dispose()

工作簿保護(hù)與工作表保護(hù)可以同時(shí)使用,實(shí)現(xiàn)從整體結(jié)構(gòu)到單元格內(nèi)容的多層防護(hù)。

隱藏公式

在包含復(fù)雜計(jì)算公式的報(bào)表中,有時(shí)需要讓用戶看到計(jì)算結(jié)果但不能查看或修改公式本身。通過(guò)設(shè)置 IsFormulaHidden 屬性并啟用保護(hù),可以隱藏工作表中的所有公式:

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
workbook.LoadFromFile("input.xlsx")
sheet = workbook.Worksheets[0]

# 隱藏已使用區(qū)域中的所有公式
sheet.AllocatedRange.IsFormulaHidden = True

# 啟用工作表保護(hù)以使隱藏生效
sheet.Protect("e-iceblue")

workbook.SaveToFile("HideFormulas.xlsx", ExcelVersion.Version2013)
workbook.Dispose()

需要注意的是,IsFormulaHidden 屬性只有在啟用工作表保護(hù)后才會(huì)生效。單獨(dú)設(shè)置該屬性不會(huì)隱藏公式。

解除工作表保護(hù)

解除保護(hù)需要提供正確的密碼。使用 Unprotect() 方法并傳入設(shè)置保護(hù)時(shí)使用的密碼即可:

from spire.xls import *
from spire.xls.common import *

workbook = Workbook()
workbook.LoadFromFile("ProtectedSheet.xlsx")
sheet = workbook.Worksheets[0]

# 使用密碼解除保護(hù)
sheet.Unprotect("e-iceblue")

workbook.SaveToFile("UnprotectedSheet.xlsx", ExcelVersion.Version2013)
workbook.Dispose()

如果工作表沒(méi)有設(shè)置密碼保護(hù),可以直接調(diào)用 Unprotect() 方法無(wú)需傳入?yún)?shù)。

實(shí)用技巧

保護(hù)與可編輯區(qū)域的組合策略:在構(gòu)建數(shù)據(jù)錄入模板時(shí),可以先用 AddAllowEditRange() 開(kāi)放輸入?yún)^(qū)域,再保護(hù)工作表。這樣既能防止用戶意外修改表頭和公式,又不影響正常的業(yè)務(wù)數(shù)據(jù)錄入。

批量保護(hù)多個(gè)工作表:遍歷工作簿中的所有工作表并統(tǒng)一設(shè)置保護(hù)密碼:

for i in range(workbook.Worksheets.Count):
    sheet = workbook.Worksheets[i]
    sheet.Protect("CommonPassword", SheetProtectionType.All)

密碼安全建議:在生產(chǎn)環(huán)境中,密碼不應(yīng)硬編碼在源代碼中。建議使用環(huán)境變量或配置文件管理密碼,并選擇足夠強(qiáng)度的密碼以防止暴力 破解。

總結(jié)

本文介紹了使用 Python 對(duì) Excel 工作表和工作簿進(jìn)行保護(hù)的完整方法,包括基礎(chǔ)保護(hù)、鎖定特定單元格和行列、設(shè)置可編輯區(qū)域、隱藏公式以及解除保護(hù)等操作。這些功能在自動(dòng)化報(bào)表生成、批量文件處理和文檔安全管理等場(chǎng)景中具有廣泛的實(shí)用價(jià)值。

結(jié)合條件格式、數(shù)據(jù)驗(yàn)證等功能,可以構(gòu)建出安全性更高、功能更完善的 Excel 自動(dòng)化處理方案。

到此這篇關(guān)于使用Python保護(hù)和取消保護(hù)Excel工作表和工作簿的完整代碼的文章就介紹到這了,更多相關(guān)Python保護(hù)和取消保護(hù)Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • tensorflow之并行讀入數(shù)據(jù)詳解

    tensorflow之并行讀入數(shù)據(jù)詳解

    今天小編就為大家分享一篇tensorflow之并行讀入數(shù)據(jù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 在Flask使用TensorFlow的幾個(gè)常見(jiàn)錯(cuò)誤及解決

    在Flask使用TensorFlow的幾個(gè)常見(jiàn)錯(cuò)誤及解決

    這篇文章主要介紹了在Flask使用TensorFlow的幾個(gè)常見(jiàn)錯(cuò)誤及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • python+numpy實(shí)現(xiàn)的基本矩陣操作示例

    python+numpy實(shí)現(xiàn)的基本矩陣操作示例

    這篇文章主要介紹了python+numpy實(shí)現(xiàn)的基本矩陣操作,結(jié)合實(shí)例形式分析了Python使用numpy模塊針對(duì)矩陣進(jìn)行創(chuàng)建、增刪查改、索引、運(yùn)算相關(guān)操作實(shí)現(xiàn)技巧,注釋中包含有詳細(xì)的說(shuō)明,需要的朋友可以參考下
    2019-07-07
  • Python垃圾回收機(jī)制三種實(shí)現(xiàn)方法

    Python垃圾回收機(jī)制三種實(shí)現(xiàn)方法

    這篇文章主要介紹了Python垃圾回收機(jī)制三種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 10張動(dòng)圖學(xué)會(huì)python循環(huán)與遞歸問(wèn)題

    10張動(dòng)圖學(xué)會(huì)python循環(huán)與遞歸問(wèn)題

    今天為大家整理了十張動(dòng)圖GIFS,有助于認(rèn)識(shí)循環(huán)、遞歸、二分檢索等概念的具體運(yùn)行情況。代碼實(shí)例以Python語(yǔ)言編寫(xiě),非常不錯(cuò),感興趣的朋友跟隨小編一起學(xué)習(xí)吧
    2021-02-02
  • 使用Python進(jìn)行視頻相似度比較實(shí)例

    使用Python進(jìn)行視頻相似度比較實(shí)例

    這篇文章主要介紹了使用Python進(jìn)行視頻相似度比較實(shí)例,本文通過(guò)漢明距離算法與圖片比較等方法對(duì)比兩個(gè)視頻流的相似度,文中提供了部分實(shí)現(xiàn)代碼與解決思路,需要的朋友可以參考下
    2023-07-07
  • 關(guān)于windos10環(huán)境下編譯python3版pjsua庫(kù)的問(wèn)題

    關(guān)于windos10環(huán)境下編譯python3版pjsua庫(kù)的問(wèn)題

    pjsua默認(rèn)綁定的python版本是python 2.4,使用起來(lái)有諸多限制,希望可以使用python3調(diào)用pjsua的庫(kù)實(shí)現(xiàn)軟電話的基礎(chǔ)功能。這篇文章主要介紹了windos10環(huán)境下編譯python3版pjsua庫(kù),需要的朋友可以參考下
    2021-10-10
  • Python的字符串示例講解

    Python的字符串示例講解

    本文重點(diǎn)講解字符串的創(chuàng)建,字符串的定義和字符串的常見(jiàn)操作,對(duì)Python的字符串不熟悉的同學(xué)隨小編一起學(xué)習(xí)吧!
    2021-04-04
  • 基于Python中capitalize()與title()的區(qū)別詳解

    基于Python中capitalize()與title()的區(qū)別詳解

    下面小編就為大家分享一篇基于Python中capitalize()與title()的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Python+OpenCV之圖像輪廓詳解

    Python+OpenCV之圖像輪廓詳解

    這篇文章主要為大家詳細(xì)介紹了Python?OpenCV實(shí)現(xiàn)圖像輪廓的方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以了解一下
    2022-09-09

最新評(píng)論

监利县| 定边县| 松阳县| 会宁县| 绵阳市| 北宁市| 宜章县| 钟山县| 河西区| 东阿县| 石首市| 白城市| 来安县| 石狮市| 夏河县| 武义县| 长顺县| 吉林省| 绥芬河市| 敦煌市| 义乌市| 荔波县| 肇庆市| 调兵山市| 延津县| 新安县| 宜宾县| 乌恰县| 新宁县| 柯坪县| 得荣县| 沂源县| 师宗县| 彭山县| 曲周县| 确山县| 泰安市| 鹤山市| 利辛县| 孙吴县| 渭源县|