Python xlsxwriter是否设置打开文档的密码?

Python xlsxwriter是否设置打开文档的密码?,python,password-protection,xlsxwriter,Python,Password Protection,Xlsxwriter,我正在尝试使用xlsxwriter创建带有工作簿密码的xlsx文件。我浏览了文档并浏览了源代码,但似乎找不到任何相关信息。您是否尝试这样设置密码: wb = Workbook() ws = wb.worksheets[0] ws.protect('abc123') 根据文件 Excel中的工作表级密码提供的保护非常弱。是的 不加密数据,很容易停用。完整工作簿 XlsxWriter不支持加密,因为它需要 完全不同的文件格式,需要几个人月才能完成 实施 您可以向工作表中添加密码,但它不是一个受强保

我正在尝试使用xlsxwriter创建带有工作簿密码的xlsx文件。我浏览了文档并浏览了源代码,但似乎找不到任何相关信息。

您是否尝试这样设置密码:

wb = Workbook()
ws = wb.worksheets[0]
ws.protect('abc123')

根据文件

Excel中的工作表级密码提供的保护非常弱。是的 不加密数据,很容易停用。完整工作簿 XlsxWriter不支持加密,因为它需要 完全不同的文件格式,需要几个人月才能完成 实施

您可以向工作表中添加密码,但它不是一个受强保护的方法

worksheet.protect(<password>)
工作表.protect()
工作表。protect()仅保护工作表不被编辑。 但是,我们可以将protect()方法与隐藏格式结合起来,从第一个视图隐藏数据。只有拥有密码,才能解锁和取消隐藏单元格

我的做法如下:

import xlsxwriter

workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()

test_content = (
    ['Hi', 123],
    ['I',   1123],
    ['AM',  1231231],
    ['LOCKED',1123123],
)

row = 0
col = 0

for text, num in (test_content):
    worksheet.write(row, col,     text)
    worksheet.write(row, col + 1, num)
    worksheet.set_row(row, None, None, {'hidden': True}) #hide the row
    row += 1

worksheet.protect('password') # set the password and protect

workbook.close()

找到了问题的完美解决方案。不完全使用xlsxwriter,但工作完美无瑕。 使用pywin32,因此遗憾地仅限于windows计算机

import win32com.client as win32

excel = win32.gencache.EnsureDispatch('Excel.Application')
#Before saving the file set DisplayAlerts to False to suppress the warning dialog:
excel.DisplayAlerts = False
wb = excel.Workbooks.Open(your_file_name)
# refer https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2007/bb214129(v=office.12)?redirectedfrom=MSDN
# FileFormat = 51 is for .xlsx extension
wb.SaveAs(your_file_name, 51, 'your password')                                               
wb.Close() 
excel.Application.Quit()

以下是原始答案的答案。

我特别需要防止打开文档的工作簿密码。据我所知,这是唯一一个真正加密数据的密码。感谢您找到不支持该密码的文档。我想这是最接近我现在得到的答案了,谢谢。这件事的预期结果是什么?当我做这件事时,什么也没发生。谢谢你的建议。虽然这可能很有用,但我特别需要工作簿密码。我需要对数据进行加密,而不仅仅是隐藏。我相信这还需要您在Windows上运行并安装Microsoft Excel。例如,如果您是从Linux设备生成报告,那么这可能不是一个可行的选择。是的,您是对的,这只适用于安装了Excel的Windows。与Linux系统或Mac不兼容。根据Microsoft的说法,“工作表级别的保护不是安全功能。它只是防止用户修改工作表中锁定的单元格。”()上面的问题是关于工作簿密码的,但您建议的答案仅适用于工作表密码。