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

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

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

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

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

環(huán)境準備

本文使用 Spire.XLS for Python 庫操作 Excel 文件,通過 pip 安裝:

pip install Spire.XLS

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

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

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

Excel 的保護機制分為兩個層級:

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

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

保護工作表

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

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

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

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

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

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

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

鎖定特定單元格

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

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è)為未鎖定(即使工作表受保護也可編輯)
sheet.Range["C3"].Style.Locked = False

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

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

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

鎖定特定行或列

當需要保護整行或整列數(shù)據(jù)時,可以通過遍歷設(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

# 啟用保護
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

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

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

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

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

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"])

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

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

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

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

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

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

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

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

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

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

隱藏公式

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

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

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

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

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

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

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

解除工作表保護

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

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

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

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

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

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

實用技巧

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

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

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

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

總結(jié)

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

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

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

相關(guān)文章

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

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

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

    在Flask使用TensorFlow的幾個常見錯誤及解決

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

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

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

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

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

    10張動圖學(xué)會python循環(huán)與遞歸問題

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

    使用Python進行視頻相似度比較實例

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

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

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

    Python的字符串示例講解

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

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

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

    Python+OpenCV之圖像輪廓詳解

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

最新評論

昌都县| 滁州市| 济源市| 江西省| 汤阴县| 綦江县| 滦南县| 拜城县| 吴桥县| 凤城市| 二连浩特市| 加查县| 洞头县| 富民县| 神农架林区| 新龙县| 江陵县| 普兰店市| 榆中县| 灵璧县| 镇雄县| 汉寿县| 瓦房店市| 炎陵县| 临泽县| 闵行区| 手游| 万载县| 普安县| 绥芬河市| 马鞍山市| 高唐县| 吴旗县| 海淀区| 北海市| 略阳县| 泗水县| 武穴市| 博白县| 新沂市| 福泉市|