Как программно установить метки чувствительности Excel с помощью Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как программно установить метки чувствительности Excel с помощью Python?

Сообщение Anonymous »

Недавно наш ИТ-отдел применил политику, согласно которой мы должны указывать метку конфиденциальности в Excel.
Это привело к сбою в работе моих автоматических кодов py для создания персонализированных файлов Excel.
Помимо использования Excelwriter для записи в файл, я также использую win32com для защиты отдельных файлов случайным паролем. Всякий раз, когда win32com открывает файл, ему предлагается выбрать метку конфиденциальности, которую он не может обойти и, следовательно, не может продолжить.
Есть ли способ программно выбрать по умолчанию «конфиденциально» в качестве метка конфиденциальности?
далее кратко описано, как я генерирую файлы
while rc < idcount:
var_id= df['idnum'].iloc[rc]
var_password = df['password'].iloc[rc]
main_df = df[(df['idnum'] == var_id)]

wsname = 'testsheet'
staff_file = pd.ExcelWriter(dummyloc + 'Dummy.xlsx', engine='xlsxwriter')
main_df.to_excel(staff_file,wsname,startrow=4,index=False)

workbook = staff_file.book
workbook.set_vba_name('ThisWorkbook')
workbook.add_vba_project(dummyloc + './vbaProject.bin') #i added a macro for some internal controls.
staff_file.save()
staff_file.close()

excel = Dispatch('Excel.Application')
wb = excel.Workbooks.Open(dummyloc + 'Dummy.xlsx')
excel.Worksheets[wsname].Activate()

excel.ActiveSheet.Protect('ABCD',True ,True ,True ,False ,False , False , False , False , False , False , False ,False , True , True , False)
wb.SaveAs(Filename = dummyloc + 'Excel\\' + 'Dummy1',FileFormat= 52,Password=str(var_password))
wb.Close()

rc = rc+ 1

Я также нашел предложенное решение, но каким-то образом.
Предполагается, что для ввода пароля необходимо выполнить макрос vba. Однако, возможно, я закодировал его неправильно, это ничего не изменило
def set_password(excel_file_path, pw):
from pathlib import Path

excel_file_path = Path(excel_file_path)

vbs_script = \
f"""' Save with password required upon opening

Set excel_object = CreateObject("Excel.Application")
Set workbook = excel_object.Workbooks.Open("{excel_file_path}")

excel_object.DisplayAlerts = False
excel_object.Visible = False

workbook.SaveAs "{excel_file_path}",, "{pw}"

excel_object.Application.Quit
"""

# write
vbs_script_path = excel_file_path.parent.joinpath("set_pw.vbs")
with open(vbs_script_path, "w") as file:
file.write(vbs_script)

#execute
subprocess.call(['cscript.exe', str(vbs_script_path)])

# remove
vbs_script_path.unlink()

return None


Подробнее здесь: https://stackoverflow.com/questions/696 ... ing-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»