ole.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. # Copyright (c) 2010-2024 openpyxl
  2. from openpyxl.descriptors.serialisable import Serialisable
  3. from openpyxl.descriptors import (
  4. Typed,
  5. Integer,
  6. String,
  7. Set,
  8. Bool,
  9. Sequence,
  10. )
  11. from openpyxl.drawing.spreadsheet_drawing import AnchorMarker
  12. from openpyxl.xml.constants import SHEET_DRAWING_NS
  13. class ObjectAnchor(Serialisable):
  14. tagname = "anchor"
  15. _from = Typed(expected_type=AnchorMarker, namespace=SHEET_DRAWING_NS)
  16. to = Typed(expected_type=AnchorMarker, namespace=SHEET_DRAWING_NS)
  17. moveWithCells = Bool(allow_none=True)
  18. sizeWithCells = Bool(allow_none=True)
  19. z_order = Integer(allow_none=True, hyphenated=True)
  20. def __init__(self,
  21. _from=None,
  22. to=None,
  23. moveWithCells=False,
  24. sizeWithCells=False,
  25. z_order=None,
  26. ):
  27. self._from = _from
  28. self.to = to
  29. self.moveWithCells = moveWithCells
  30. self.sizeWithCells = sizeWithCells
  31. self.z_order = z_order
  32. class ObjectPr(Serialisable):
  33. tagname = "objectPr"
  34. anchor = Typed(expected_type=ObjectAnchor, )
  35. locked = Bool(allow_none=True)
  36. defaultSize = Bool(allow_none=True)
  37. _print = Bool(allow_none=True)
  38. disabled = Bool(allow_none=True)
  39. uiObject = Bool(allow_none=True)
  40. autoFill = Bool(allow_none=True)
  41. autoLine = Bool(allow_none=True)
  42. autoPict = Bool(allow_none=True)
  43. macro = String()
  44. altText = String(allow_none=True)
  45. dde = Bool(allow_none=True)
  46. __elements__ = ('anchor',)
  47. def __init__(self,
  48. anchor=None,
  49. locked=True,
  50. defaultSize=True,
  51. _print=True,
  52. disabled=False,
  53. uiObject=False,
  54. autoFill=True,
  55. autoLine=True,
  56. autoPict=True,
  57. macro=None,
  58. altText=None,
  59. dde=False,
  60. ):
  61. self.anchor = anchor
  62. self.locked = locked
  63. self.defaultSize = defaultSize
  64. self._print = _print
  65. self.disabled = disabled
  66. self.uiObject = uiObject
  67. self.autoFill = autoFill
  68. self.autoLine = autoLine
  69. self.autoPict = autoPict
  70. self.macro = macro
  71. self.altText = altText
  72. self.dde = dde
  73. class OleObject(Serialisable):
  74. tagname = "oleObject"
  75. objectPr = Typed(expected_type=ObjectPr, allow_none=True)
  76. progId = String(allow_none=True)
  77. dvAspect = Set(values=(['DVASPECT_CONTENT', 'DVASPECT_ICON']))
  78. link = String(allow_none=True)
  79. oleUpdate = Set(values=(['OLEUPDATE_ALWAYS', 'OLEUPDATE_ONCALL']))
  80. autoLoad = Bool(allow_none=True)
  81. shapeId = Integer()
  82. __elements__ = ('objectPr',)
  83. def __init__(self,
  84. objectPr=None,
  85. progId=None,
  86. dvAspect='DVASPECT_CONTENT',
  87. link=None,
  88. oleUpdate=None,
  89. autoLoad=False,
  90. shapeId=None,
  91. ):
  92. self.objectPr = objectPr
  93. self.progId = progId
  94. self.dvAspect = dvAspect
  95. self.link = link
  96. self.oleUpdate = oleUpdate
  97. self.autoLoad = autoLoad
  98. self.shapeId = shapeId
  99. class OleObjects(Serialisable):
  100. tagname = "oleObjects"
  101. oleObject = Sequence(expected_type=OleObject)
  102. __elements__ = ('oleObject',)
  103. def __init__(self,
  104. oleObject=(),
  105. ):
  106. self.oleObject = oleObject