使用Python保護(hù)或加密Excel文件的7種方法
引言
Excel文件通常包含敏感信息,如財(cái)務(wù)記錄、客戶數(shù)據(jù)或?qū)S泄?。保護(hù)和加密這些文件對于防止未經(jīng)授權(quán)的訪問和維護(hù)機(jī)密性至關(guān)重要。在本文中,我們將探討如何使用Python自動化Excel文件的安全保護(hù)和加密過程,確保數(shù)據(jù)的安全性。主要包括以下主題:
- 使用文檔打開密碼保護(hù) Excel 文件
- 使用文檔修改密碼保護(hù) Excel 文件
- 將 Excel 文件標(biāo)記為最終版本
- 保護(hù) Excel 工作表
- 在保護(hù) Excel 工作表的同時(shí)允許編輯某些單元格
- 鎖定 Excel 工作表中的特定單元格
- 鎖定Excel 工作表中的特定行或列
安裝Python Excel庫
在Python中,我們可以使用Spire.XLS for Python庫來保護(hù)或加密Excel文件。該庫提供了多種功能來保護(hù)和加密Excel文件,如設(shè)置密碼、應(yīng)用工作表保護(hù)、將Excel標(biāo)記為最終版本、鎖定單元格、行、列等。
你可以使用以下pip命令從PyPI安裝Spire.XLS for Python:
pip install Spire.Xls
如果不清楚如何安裝,查看這篇文檔:在Windows中安裝Spire.XLS for Python的操作指南_python_腳本之家
Python 使用文檔打開密碼保護(hù) Excel 文件
文檔打開密碼的主要作用是限制未經(jīng)授權(quán)的人打開或訪問文檔。設(shè)置了打開密碼后,任何人都需要輸入正確的密碼才能成功打開該Excel文件。
通過使用Spire.XLS for Python提供的Workbook.Protect()方法,可以給Excel文件設(shè)置文檔打開密碼。關(guān)鍵步驟如下:
- 創(chuàng)建Workbook類的實(shí)例。
- 使用Workbook.LoadFromFile()方法加載Excel文件。
- 使用Workbook.Protect()方法給該Excel文件設(shè)置文檔打開密碼。
- 使用Workbook.SaveToFile()方法保存結(jié)果文件。
完整代碼:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建一個(gè) Workbook 對象
workbook = Workbook()
# 加載一個(gè) Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 給文件設(shè)置文檔打開密碼
workbook.Protect("12345Open")
# 保存結(jié)果文件
workbook.SaveToFile("文檔打開密碼.xlsx", ExcelVersion.Version2013)
workbook.Dispose()需要注意的是,文檔打開密碼和修改密碼可以單獨(dú)設(shè)置,也可以同時(shí)設(shè)置。當(dāng)同時(shí)設(shè)置了這兩種密碼時(shí),用戶不僅需要輸入正確的打開密碼才能打開文件,還需要輸入正確的修改密碼才能編輯文件內(nèi)容。
Python 將 Excel 文件標(biāo)記為最終版本
當(dāng)Excel文件被標(biāo)記為最終版本后,其他用戶在打開文件時(shí)會看到"此文件已被標(biāo)記為最終版本"的提示,從而知道不應(yīng)再對其進(jìn)行編輯。這種方式可以有效防止Excel文件被意外修改。
要將Excel文件標(biāo)記為最終版本,可以使用Workbook.CustomDocumentProperties.Add("_MarkAsFinal", True)方法。具體步驟如下:
- 創(chuàng)建Workbook類的實(shí)例。
- 使用Workbook.LoadFromFile()方法加載Excel文件。
- 使用Workbook.CustomDocumentProperties.Add("_MarkAsFinal", True)方法將該Excel文件標(biāo)記為最終版本。
- 使用Workbook.SaveToFile()方法保存結(jié)果文件。
完整代碼:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建一個(gè) Workbook 對象
workbook = Workbook()
# 加載一個(gè) Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 將文檔標(biāo)記為最終版本
workbook.CustomDocumentProperties.Add("_MarkAsFinal", True)
# 保存結(jié)果文件
workbook.SaveToFile("最終版本.xlsx", ExcelVersion.Version2013)
workbook.Dispose()Python 保護(hù) Excel 工作表
除了保護(hù)整個(gè)Excel文件以外,Excel還支持對單個(gè)工作表進(jìn)行保護(hù),從而限制用戶對特定工作表的編輯操作。
要保護(hù)特定Excel工作表,可以使用Worksheet.Protect()方法。具體步驟如下:
- 創(chuàng)建Workbook類的實(shí)例。
- 使用Workbook.LoadFromFile()方法加載Excel文件。
- 使用Workbook.Worksheets[index]屬性獲取特定工作表。
- 使用Worksheet.Protect()方法保護(hù)該工作表。
- 使用Workbook.SaveToFile()方法保存結(jié)果文件。
完整代碼:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建一個(gè) Workbook 對象
workbook = Workbook()
# 加載一個(gè) Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個(gè)工作表
sheet = workbook.Worksheets[0]
# 用密碼保護(hù)工作表,并指定保護(hù)類型
sheet.Protect("Sheet111", SheetProtectionType.none)
# 保存結(jié)果文件
workbook.SaveToFile("保護(hù)工作表.xlsx", ExcelVersion.Version2013)
workbook.Dispose()Python 在保護(hù) Excel 工作表的同時(shí)允許編輯某些單元格
在保護(hù) Excel 工作表時(shí),你可以設(shè)置可編輯區(qū)域,以允許用戶編輯被保護(hù)工作表中的某些特定單元格。
要設(shè)置工作表的可編輯區(qū)域,可以使用Worksheet.AddAllowEditRange()方法。具體步驟如下:
- 創(chuàng)建Workbook類的實(shí)例。
- 使用Workbook.LoadFromFile()方法加載Excel文件。
- 使用Workbook.Worksheets[index]屬性獲取特定工作表。
- 使用Worksheet.AddAllowEditRange()方法指定保護(hù)工作表后可編輯的單元格區(qū)域。
- 使用Worksheet.Protect()方法保護(hù)該工作表。
- 使用Workbook.SaveToFile()方法保存結(jié)果文件。
完整代碼:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建一個(gè) Workbook 對象
workbook = Workbook()
# 加載一個(gè) Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個(gè)工作表
sheet = workbook.Worksheets[0]
# 指定可編輯的單元格區(qū)域
sheet.AddAllowEditRange("Range1", sheet.Range["B2:E11"])
# 用密碼保護(hù)工作表
sheet.Protect("Sheet111", SheetProtectionType.none)
# 保存結(jié)果文件
workbook.SaveToFile("可編輯區(qū)域.xlsx", ExcelVersion.Version2013)
workbook.Dispose()Python 鎖定 Excel 工作表中的特定單元格
如果 Excel 工作表中一些關(guān)鍵單元格包含重要的公式或數(shù)據(jù),你可以對這些單元格進(jìn)行鎖定保護(hù)。這樣可以防止普通用戶對這些關(guān)鍵單元格進(jìn)行編輯,同時(shí)仍然讓他們可以對其他單元格進(jìn)行操作。
要鎖定特定單元格,可以使用Worksheet.Range[].Style.Locked屬性。具體步驟如下:
- 創(chuàng)建Workbook類的實(shí)例。
- 使用Workbook.LoadFromFile()方法加載Excel文件。
- 使用Workbook.Worksheets[index]屬性獲取特定工作表。
- 使用Worksheet.Cells屬性獲取工作表的單元格集合。
- 循環(huán)遍歷單元格,并取消所有單元格的鎖定狀態(tài) (Excel中所有單元格的鎖定狀態(tài)默認(rèn)是選中的)。
- 使用Worksheet.Range[].Style.Locked屬性鎖定特定單元格或單元格區(qū)域。
- 使用Worksheet.Protect()方法保護(hù)該工作表。
- 使用Workbook.SaveToFile()方法保存結(jié)果文件。
完整代碼:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建一個(gè) Workbook 對象
workbook = Workbook()
# 加載一個(gè) Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個(gè)工作表
sheet = workbook.Worksheets[0]
# 獲取工作表的單元格集合
cellsCollection = sheet.Cells
# 循環(huán)遍歷單元格,并取消所有單元格的鎖定狀態(tài) (在Excel中,所有單元格的鎖定狀態(tài)默認(rèn)都是選中的)
for cell in cellsCollection:
cell.Style.Locked = False
# 鎖定特定的單元格區(qū)域
sheet.Range["A1:E1"].Style.Locked = True
# 用密碼保護(hù)工作表
sheet.Protect("Sheet111", SheetProtectionType.none)
# 保存結(jié)果文件
workbook.SaveToFile("鎖定單元格.xlsx", ExcelVersion.Version2013)
workbook.Dispose()Python 鎖定 Excel 工作表中的特定行或列
除了鎖定特定的單元格或區(qū)域外,你還可以鎖定整行或整列。
要鎖定特定的行或列,可以使用Worksheet.Rows[index].Style.Locked或Worksheet.Columns[index].Style.Locked屬性。具體步驟如下:
- 創(chuàng)建Workbook類的實(shí)例。
- 使用Workbook.LoadFromFile()方法加載Excel文件。
- 使用Workbook.Worksheets[index]屬性獲取特定工作表。
- 使用Worksheet.Cells屬性獲取工作表的單元格集合。
- 循環(huán)遍歷單元格,并取消所有單元格的鎖定狀態(tài) (Excel中所有單元格的鎖定狀態(tài)默認(rèn)是選中的)。
- 使用Worksheet.Rows[index].Style.Locked或Worksheet.Columns[index].Style.Locked屬性鎖定特定行或列。
- 使用Worksheet.Protect()方法保護(hù)該工作表。
- 使用Workbook.SaveToFile()方法保存結(jié)果文件。
完整代碼:
from spire.xls import *
from spire.xls.common import *
# 創(chuàng)建一個(gè) Workbook 對象
workbook = Workbook()
# 加載一個(gè) Excel 文件
workbook.LoadFromFile("測試.xlsx")
# 獲取第一個(gè)工作表
sheet = workbook.Worksheets[0]
# 獲取工作表的單元格集合
cellsCollection = sheet.Cells
# 循環(huán)遍歷單元格,并取消所有單元格的鎖定狀態(tài) (在Excel中,所有單元格的鎖定狀態(tài)默認(rèn)都是選中的)
for cell in cellsCollection:
cell.Style.Locked = False
# 鎖定第一行和第一列
sheet.Rows[0].Style.Locked = True
sheet.Columns[0].Style.Locked = True
# 用密碼保護(hù)工作表
sheet.Protect("Sheet111", SheetProtectionType.none)
# 保存結(jié)果文件
workbook.SaveToFile("鎖定行列.xlsx", ExcelVersion.Version2013)
workbook.Dispose()以上就是使用Python保護(hù)或加密Excel文件的7種不同的場景。希望對你有幫助。
到此這篇關(guān)于使用Python保護(hù)或加密Excel文件的7種方法的文章就介紹到這了,更多相關(guān)Python保護(hù)或加密Excel文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入解析NumPy中的Broadcasting廣播機(jī)制
在吳恩達(dá)老師的深度學(xué)習(xí)專項(xiàng)課程中,老師有提到NumPy中的廣播機(jī)制,同時(shí)那一周的測驗(yàn)也有涉及到廣播機(jī)制的題目。那么,到底什么是NumPy中的廣播機(jī)制?本文就來介紹一下2021-05-05
python不相等的兩個(gè)字符串的 if 條件判斷為True詳解
這篇文章主要介紹了python不相等的兩個(gè)字符串的 if 條件判斷為True詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
詳解Python?NumPy如何使用argsort方法進(jìn)行排序
NumPy提供了各種功能強(qiáng)大的數(shù)組操作方法,其中之一就是argsort方法,本文將詳細(xì)介紹argsort方法的使用,以及如何在實(shí)際項(xiàng)目中充分利用它進(jìn)行排序操作,希望對大家有所幫助2024-03-03
Python實(shí)現(xiàn)json對值進(jìn)行模糊搜索的示例詳解
我經(jīng)常使用json進(jìn)行存儲配置,于是常常遇到這樣的問題:如果想要對某個(gè)數(shù)組里的值進(jìn)行模糊搜索,同時(shí)輸出相關(guān)的其他數(shù)組相同位置的的值該如何實(shí)現(xiàn)呢?本文就來和大家詳細(xì)聊聊2023-01-01
pandas取dataframe特定行列的實(shí)現(xiàn)方法
大家在使用Python進(jìn)行數(shù)據(jù)分析時(shí),經(jīng)常要使用到的一個(gè)數(shù)據(jù)結(jié)構(gòu)就是pandas的DataFrame,本文介紹了pandas取dataframe特定行列的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
Python判斷以什么結(jié)尾以什么開頭的實(shí)例
今天小編就為大家分享一篇Python判斷以什么結(jié)尾以什么開頭的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的分類
今天給大家整理了Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的分類的文章,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)的小伙伴們很有幫助,需要的朋友可以參考下2021-06-06
Python實(shí)現(xiàn)的矩陣轉(zhuǎn)置與矩陣相乘運(yùn)算示例
這篇文章主要介紹了Python實(shí)現(xiàn)的矩陣轉(zhuǎn)置與矩陣相乘運(yùn)算,結(jié)合實(shí)例形式分析了Python針對矩陣進(jìn)行轉(zhuǎn)置與相乘運(yùn)算的相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-03-03
python cs架構(gòu)實(shí)現(xiàn)簡單文件傳輸
這篇文章主要為大家詳細(xì)介紹了python cs架構(gòu)實(shí)現(xiàn)簡單文件傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07

