如何使用 openpyxl 从 excel 工作簿中删除属性

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

我确定这个问题有重复,但不是我遇到的问题,也没有找到任何有助于解决我的问题的答案。我在 Windows 和 Mac 上都运行这个。我正在尝试使用

openpyxl
从 excel 文件中删除某些属性。在运行
wb.save(wb)
之前,我能够确认当前工作簿的属性已正确更新。使用
wb.save(wb)
保存文件然后打开文件或
core.xml
后,我仍然看到我试图删除的属性。我究竟做错了什么?有没有更好的方法通过直接使用不涉及任何新的第 3 方库的脚本编辑
core.xml
来实现这一目标?

from openpyxl import load_workbook
from openpyxl.packaging.core import DocumentProperties
from openpyxl.workbook import Workbook


def set_last_mod_by(wb: Workbook):
    props = wb.properties
    new_props = DocumentProperties()
    props_to_reset = ['lastModifiedBy', 'last_modified_by']

    for prop in dir(props)[34:]:
        if prop in props_to_reset:
            setattr(new_props, prop, None)
        else:
            setattr(new_props, prop, getattr(props, prop))

    return new_props


def main():
    location_path = 'Desktop'
    file_name = 'Test_Report'
    file_type = '.xlsx'
    full_path = f'{location_path}{file_name}{file_type}'

    wb = load_workbook(filename=full_path)
    wb.properties = set_last_mod_by(wb)
    wb.save(f'{location_path}{file_name}_Copy{file_type}')
    print('Done!')


if __name__ == '__main__':
    main()
python excel openpyxl
© www.soinside.com 2019 - 2024. All rights reserved.