2. 加解密execl表
要求:
- 操作excel
- 加解密excel某行数据
- 加解密excel某列数据
#!/usr/bin/python # _*_ coding: utf-8 _*_ """ @Author : summer @File : 加解密.py @Software: PyCharm """ import os import base64 import openpyxl class encryption_decryption(): def __init__(self, filename, sheet_name="Sheet1", row=None, column=None): self.filename = filename self.row = row self.column = column self.sheet_name = sheet_name self.row = row self.wb = None if not self.check_filename(): exit("%s 文件不在" % self.filename) def check_filename(self): flag = False if os.path.exists(self.filename): wb = openpyxl.load_workbook(self.filename) self.wb = wb flag = True return flag # 加密某行数据 def encryption_row(self): sheet = self.wb[self.sheet_name] # 获取到哪一页 for cell in list(sheet.rows)[self.row]: # 第row行 cell.value = base64.b64encode(str(cell.value).encode('UTF-8')) self.wb.save('加密行.xlsx') # 解密某行数据 def decryption_row(self): sheet = self.wb[self.sheet_name] # 获取到哪一页 for cell in list(sheet.rows)[self.row]: # 第row行 cell.value = str(base64.b64decode(cell.value), 'utf-8') self.wb.save('解密行.xlsx') # 加密某列数据 def encryption_column(self): sheet = self.wb[self.sheet_name] for cell in list(sheet.columns)[self.column]: # 第column列 cell.value = base64.b64encode(str(cell.value).encode('UTF-8')) self.wb.save('加密列.xlsx') # 解密某列数据 def decryption_column(self): sheet = self.wb[self.sheet_name] for cell in list(sheet.columns)[self.column]: # 第column列 cell.value = str(base64.b64decode(str(cell.value)), 'utf-8') self.wb.save('解密列.xlsx') if __name__ == '__main__': # 加密某行 obj = encryption_decryption(r".\example.xlsx", "Sheet1", row=2) obj.encryption_row() # 解密某行 obj.decryption_row() # 加密某列 obj = encryption_decryption(r".\example.xlsx", column=2) obj.encryption_column() # 解密某列 obj.decryption_column()
改进版
#!/usr/bin/python # _*_ coding: utf-8 _*_ """ @Time : 2019/1/23 16:22 @File : 加解密.py @Software: PyCharm """ import os import base64 import openpyxl class encryption_decryption(): def __init__(self, filename, sheet_name="Sheet1", row=None, column=None): self.filename = filename self.row = row self.column = column self.sheet_name = sheet_name self.row = row self.wb = None if not self.check_filename(): exit("%s 文件不在" % self.filename) def check_filename(self): if os.path.exists(self.filename): self.wb = openpyxl.load_workbook(self.filename) return True return False def base(self, col_row, mode, outfilename): sheet = self.wb[self.sheet_name] # 获取到哪一页 if col_row == "行": # 行 for cell in list(sheet.rows)[self.row]: if mode == "加密": cell.value = base64.b64encode(str(cell.value).encode('UTF-8')) elif mode == "解密": cell.value = str(base64.b64decode(cell.value), 'utf-8') else: exit("编码方式不对。只能有,加密encrypt和解密decrypt") elif col_row == "列": for cell in list(sheet.columns)[self.column]: # 第column列 if mode == "加密": cell.value = base64.b64encode(str(cell.value).encode('UTF-8')) elif mode == "解密": cell.value = str(base64.b64decode(str(cell.value)), 'utf-8') else: exit("编码方式不对。只能有,加密encrypt和解密decrypt") else: exit("行列不对。只能有选择加密行或者加密列") self.wb.save(outfilename) def data(self, col_row, mode, outfilename): self.base(col_row, mode, outfilename) if __name__ == '__main__': # 加解密行 obj = encryption_decryption(r".\example.xlsx", "Sheet1", row=2) obj.data("行", "加密", "加密行测试.xlsx") obj.data("行", "解密", "解密行测试.xlsx") # 加解密列 obj = encryption_decryption(r".\example.xlsx", "Sheet1", column=2) obj.data("列", "加密", "加密列测试.xlsx") obj.data("列", "解密", "解密列测试.xlsx")