根据列中的统一值在循环中保存数据帧并用密码保护它

问题描述 投票:0回答:1

我正在测试以下代码,但是,虽然生成了我需要的文件(每个唯一业务区域 1 个文件——这是数据框的索引列),但它没有密码保护它。有什么想法吗?

import os
import pandas as pd
import numpy as np

from openpyxl.workbook.protection import WorkbookProtection

grouped = list(consolidated_df.groupby(['Business Region']))

passwords = {'AE': 'AE_',
             'CH': 'CH',
             'CZ': 'CZ',
             'DK': 'DK',
             'ES': 'ES',
             'FI': 'FI',
             'FR': 'FR',
             'HQ': 'HQ',
             'NL': 'NL',
             'NO': 'NO',
             'PE': 'PE',
             'PT': 'PT',
             'SE': 'SE',
             'SK': 'SK',
             'TMC': 'TMC',
             'London': 'GB',
             'York': 'GB'}

for df in grouped:
    region = df[0]
    name = str(df[1].index.unique().format()).replace("'", '').replace("[", '').replace("]", '')
    path = os.path.join(filepathtovalidate, f'{name} DM4 Oracle Load.xlsx')
    writer = pd.ExcelWriter(path)
    df[1].to_excel(writer, index=False)
    workbook = writer.book
    workbook.security = WorkbookProtection(workbookPassword=passwords.get(region))
    writer.save()
python pandas group-by openpyxl export-to-excel
1个回答
0
投票

要添加密码,您需要指定只写模式,您应该更改编写器:

writer = pd.ExcelWriter(path, engine='openpyxl', write_only=True)
© www.soinside.com 2019 - 2024. All rights reserved.