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

