使用python为excel文件设置敏感度标签

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

我试图使用 openpyxl 将数据帧加载到 Excel 模板中,并以最高灵敏度设置保存它。该模板具有由 Microsoft 管理员设置的 5 个敏感度级别,最高级别为“高度保护”。 Pic for reference

模板保存为“高度保护”,但加载数据后,新文件将恢复为“一般业务”标签。

# Load template file
template_path = filepath.xlsx
tmpwb = openpyxl.load_workbook(template_path)

#   select sheet
sheet = tmpwb['Data']

# update columns names
for i, col in enumerate(df.columns):
    sheet.cell(row=2, column=i+1).value = col

# update main data table
for i, col in enumerate(df.columns):
    for j, df_value in enumeratedf[col]):
        sheet.cell(row=j+3, column=i+1).value = df_value

file_path = savepath.xlsx

# save workbook
tmpwb.save(file_path)

有没有办法可以使用 python 控制灵敏度设置?感谢您的任何提示。

python excel pandas com openpyxl
2个回答
1
投票

敏感度标签是Office365参数,可以使用xlwings和pywin32 API进行修改。

您首先需要做的唯一一件事就是找出分类的单独 ID。

import xlwings as xw
wb = xw.Book('test.xlsx') #A workbook with a set activity label

labelinfo = wb.api.SensitivityLabel.GetLabel()
print(labelinfo.LabelId)
>>> 123123123-123123123-ajskldfj123  (as an example ID, this will look different for each LabelName)

这将为您提供灵敏度标签的 ID,然后您可以将其传递到最后修改后的 xls。每个 LabelName 看起来都不同。因此,您首先(一次性)需要找出这些敏感度标签的公司 ID 然后设置标签,如下所示:

wb = xw.Book('test.xlsx')
labelinfo = wb.api.SensitivityLabel.CreateLabelInfo()
labelinfo.AssignmentMethod = 2
labelinfo.Justification = 'init'
labelinfo.LabelId = 'YOUR-ID-GOES-HERE'
wb.api.SensitivityLabel.SetLabel(labelinfo, labelinfo)

这应该正确设置您的灵敏度标签。

您可以在这里了解更多相关信息


0
投票

对于我们的用例,敏感度标签被视为自定义属性。我不确定是否所有敏感度标签都以这种方式处理。您可以使用 openpyxl 访问自定义属性,方法如下:https://openpyxl.readthedocs.io/en/latest/workbook_custom_doc_props.html

© www.soinside.com 2019 - 2024. All rights reserved.