我目前正在实现一种工具,可以使日常工作自动化。因此,我需要创建一个python工具,该工具可以创建包含多个信息的excel文件(工作簿)并加密文件的工作表。 创建文件并用数据填充文件的第一部分可以正常工作。
但是加密根本不起作用。 我正在使用win32com,win32com.client和openpyxl。该工作簿有两个不同的工作表,分别是“ 1”和“ 2”。
我的工作簿:
import win32com.client
import os, sys, win32com, os.path, time
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = True
workbook = excel.Workbooks.Open(reading_path) ####this is the path where the file is stored
sheet = workbook.Worksheets(1)
因此我搜索了其他主题并获得了以下内容:
import openpyxl
sheet.protection.set_password('test')
sheet.save(saving_path)
不幸的是,这不起作用...我的shell响应AttributeError。详细信息:
AttributeError: <unknown>.set_password
有人知道另一种方法如何使用python仅加密excel中的页面吗?
非常感谢您的帮助!
答案 0 :(得分:1)
“加密工作表”的含义并不完全清楚,因为您引用的openpyxl
代码与加密无关;请参阅the documentation中的警告。 Excel确实支持整个工作簿的加密,但这似乎与您想要的不同。
无论如何,您的代码都会失败,因为您从sheet
获得的win32com
是与openpyxl
期望的野兽完全不同的野兽。例如,基于COM的sheet
要求运行Excel进程才能进行操作,而openpyxl
甚至不需要Excel在主机上可用。
现在,在您的特殊情况下,您实际上不需要openpyxl
(尽管您可能会发现在win32com
上使用它有很多好处),并且您可以完全留在COM中。因此,可以通过Worksheet.Protect
添加密码保护,在您的情况下,密码保护可以简化为简单运行
sheet.Protect('test')