如何在使用pandas dataframe创建的csv/excel文件中添加密码

6

我有一个数据框,如何使用密码对其进行加密

import pandas as pd 
  
# intialise data of lists. 
data = {'Name':['Tom', 'nick', 'krish', 'jack'], 'Age':[20, 21, 19, 18]} 
  
# Creating DataFrame 
df = pd.DataFrame(data) 

有没有pandas选项可以在使用数据框创建的Excel或CSV中添加密码。

这样,在GUI中打开该csv或excel时就需要密码。

尝试过以下方法:

df.to_excel('123.xlsx')

from openpyxl import Workbook
from openpyxl import load_workbook

test_spreadsheet = "123.xlsx"
wb = load_workbook(test_spreadsheet)
wb.security.workbookPassword = "password"



from openpyxl import Workbook
from openpyxl import load_workbook

test_spreadsheet = "123.xlsx"
wb = load_workbook(test_spreadsheet)
ws = wb.worksheets[0]
ws.protection
ws.protection.set_password('test')
wb.save('12344.xlsx')


from openpyxl import load_workbook
wb = load_workbook(filename = '123.xlsx')

wb.security.workbookPassword = 'test'
wb.security.lockStructure = True

wb.save('123_password.xlsx')

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

但是当我打开它时,文件没有提示输入密码就打开了。尝试在Google表格和Libre Office中打开也是如此。

发现:Openpyxl的WorkbookProtection只能防止修改那些已经存在的工作表。

操作系统:Linux


这个回答解决了你的问题吗?使用Python对Excel文件进行密码保护 - Recursing
没有尝试过所有这些方法。请检查我提供的代码,这是我尝试过的。 - yopmuios
@Recursing 在Linux中如何运行csscript.exe? - yopmuios
你有没有研究过 xlsxwriter - S3DEV
@S3DEV 尝试了以下代码 wb = Workbook('123.xlsx') ws = wb.worksheets[0] ws.protect('abc123.xlsx') 但是出现了 list index out of range 的错误提示。 - yopmuios
1个回答

1
使用这个:
import os
import win32com.client as w32

def encrypt_xlsx(path, password):
    xl = w32.gencache.EnsureDispatch('Excel.Application')
    path = path if os.path.isabs(path) else os.path.abspath(path)
    
    wb = xl.Workbooks.Open(path)
    xl.DisplayAlerts = False
    wb.SaveAs(path, 51, password)
    xl.Quit()

包括导入语句和encrypt_xlsx函数。 然后,使用pathpassword调用该函数。
示例:
>>> df = pd.DataFrame({'a':[1,2], 'b':[3,4]}); df.to_excel('123.xlsx')
>>> encrypt_xlsx('123.xlsx', 'password123')
>>> # try to open the Excel file and it will prompt you to enter a password.

代码的解释:

  1. w32.gencache.EnsureDispatch启动Excel应用程序。
  2. os.path.abspath负责将path更改为绝对路径,否则可能无法打开Excel文件。
  3. xl.Workbooks.Open打开Excel文件。
  4. xl.DisplayAlerts = False关闭在保存到相同路径时的提示。
  5. wb.SaveAs使用原始名称保存文件,51表示Excel工作簿的格式。这是Microsoft参考链接:https://learn.microsoft.com/en-us/previous-versions/office/developer/office-2007/bb241279(v=office.12)
  6. xl.Quit()关闭Excel应用程序。如果选择删除此行,请记得将xl.DisplayAlerts设置回True

如果您想要打开Excel文件或对其进行强密码加密,我建议您使用我编写的ExcelHelper类。请参考我的文章TowardsDataScience


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接