如何向使用 pandas 数据框创建的 csv/excel 添加密码

yop*_*ios 6 python csv encryption dataframe pandas

有数据框如何用密码对其进行加密

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) 
Run Code Online (Sandbox Code Playgroud)

是否有任何 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"


Run Code Online (Sandbox Code Playgroud)
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')

Run Code Online (Sandbox Code Playgroud)
from openpyxl import load_workbook
wb = load_workbook(filename = '123.xlsx')

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

wb.save('123_password.xlsx')
Run Code Online (Sandbox Code Playgroud)
wb = Workbook('123.xlsx') 
ws = wb.worksheets[0] 
ws.protect('abc123.xlsx')

Run Code Online (Sandbox Code Playgroud)

但当我打开它时。文件正在打开,没有任何密码提示。在谷歌表格和Libre Office中尝试过

发现:Openpyxl 的 WorkbookProtection 仅适用于防止修改那里的工作表。

操作系统:Linux

Ji *_*Wei 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()
Run Code Online (Sandbox Code Playgroud)

包括导入语句和函数encrypt_xlsxpath接下来,使用和调用该函数password

例子:

>>> 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.
Run Code Online (Sandbox Code Playgroud)

代码解释:

  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》中的文章。