我确定这个问题有重复,但不是我遇到的问题,也没有找到任何有助于解决我的问题的答案。我在 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()