Я использую python с win32com
для работы Excel с целью автоматизации некоторых работ.
Я пытаюсь защитить Excel, но разрешаю форматирование ячеек с помощью AllowFormattingCells=True
Однако это не смогли. Я пока не могу изменить шрифт или цвет ячеек.
Вот мой сценарий
# to Protect excel sheet with password if given
# or to UnProtect excel sheet with password if given
import argparse
import win32com.client
import os
import glob
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Protect/Unprotect sheet of Project file')
parser.add_argument('excel_files', nargs='+',help='Work sheet Excel files(support wildcards *?)')
parser.add_argument('-p','--password', help='password')
parser.add_argument('-u','--unlock', action='store_true',help='Unprotect Work sheet Excel files(default false)')
args=parser.parse_args()
src_excel_files=args.excel_files
password=args.password
unlock =args.unlock
excel_files=[]
for src in src_excel_files:
excel_files+=glob.glob(src)
# remove duplicate
excel_files=list(dict.fromkeys(excel_files))
app = win32com.client.Dispatch("Excel.Application")
for file in excel_files:
abspath = os.path.abspath(file)
print('Open file %s ...'%(abspath),end='')
try:
wb = app.Workbooks.Open(abspath, UpdateLinks=0)
sheet = wb.Worksheets("Sheet1")
except:
print('Failed')
continue
if sheet.ProtectContents:
print('Locked-->',end='')
else:
print('Unlocked-->',end='')
if unlock:
try:
if password is None:
sheet.UnProtect()
else:
sheet.UnProtect(Password=password)
except:
pass
else:
try:
if password is None:
sheet.Protect(AllowFormattingCells=True, AllowFormattingColumns=True,AllowFormattingRows=True)
else:
sheet.Protect(Password=password,AllowFormattingCells=True, AllowFormattingColumns=True,AllowFormattingRows=True)
except:
pass
if sheet.ProtectContents:
print('Locked, \tAllowFormattingCells=',sheet.Protection.AllowFormattingCells)
else:
print('Unlocked')
wb.Save()
wb.Close()
app.quit()
print('END')
Может ли кто-нибудь мне помочь?
Спасибо.