用 python 加密 excel 工作簿 sheet

encrypting excel workbook sheet with python

我目前正在实施一个工具来自动化我日常工作的一部分。因此,我需要创建一个 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 中的页面吗?

非常感谢您的帮助!

不完全清楚您所说的 "encrypting the sheet" 是什么意思,因为您提到的 openpyxl 代码与加密无关;请参阅 the documentation 中的警告。 Excel 虽然支持整个工作簿的加密,但这似乎与您想要的不同。

在任何情况下,您的代码都会失败,因为您从 win32com 获得的 sheetopenpyxl 预期的完全不同。例如,sheet 基于 COM 需要一个 Excel 进程到 运行 才能进行操作,而 openpyxl 甚至不需要 Excel 可用在主机上。

现在在您的特定情况下,您实际上不需要 openpyxl(尽管您可能会发现在 win32com 上使用它有很多好处),并且您可以完全留在 COM 中。因此,可以通过 Worksheet.Protect 添加密码保护,在您的情况下可以简单地归结为 运行ning

sheet.Protect('test')