Custom Document Properties
It is possible to add one or more CustomDocumentProperty objects to a workbook. These require a unique name (string) and can be one of 6 types:
StringProperty
IntProperty
FloatProperty
DateTimeProperty
BoolProperty
LinkProperty
LinkProperties are always associated with a defined name range.
These properties are globally for a workbook and accessed from the custom_doc_props attribute.
Sample use
Looping over all the custom properties (“custom_doc_props”):
>>> for prop in wb.custom_doc_props.props:
>>> print(f"{prop.name}: {prop.value}")
Adding a new property:
from openpyxl.packaging.custom import (
BoolProperty,
DateTimeProperty,
FloatProperty,
IntProperty,
LinkProperty,
StringProperty,
CustomPropertyList,
)
props = CustomePropertyList()
props.append(StringProperty(name="PropName1", value="Something"))
Deleting properties
wb.custom_doc_props.append(StringProperty(name="PropName6", value="Something"))
# check the property
prop = wb.custom_doc_props["PropName6"]
# delete the string property:
del prop["PropName6"]
# save the file
wb.save('outfile.xlsx')
Note
Currently not all possible property types are supported. If openpyxl cannot read a particular type, it will provide a warning and ignore it.