用python加密excel工作簿表

时间:2018-07-26 10:47:39

标签: python excel encryption openpyxl win32com

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

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

“加密工作表”的含义并不完全清楚,因为您引用的openpyxl代码与加密无关;请参阅the documentation中的警告。 Excel确实支持整个工作簿的加密,但这似乎与您想要的不同。

无论如何,您的代码都会失败,因为您从sheet获得的win32com是与openpyxl期望的野兽完全不同的野兽。例如,基于COM的sheet要求运行Excel进程才能进行操作,而openpyxl甚至不需要Excel在主机上可用。

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

sheet.Protect('test')