extended.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. from __future__ import absolute_import
  2. # Copyright (c) 2010-2019 openpyxl
  3. from openpyxl.compat import unicode
  4. from openpyxl.descriptors.serialisable import Serialisable
  5. from openpyxl.descriptors import (
  6. Typed,
  7. )
  8. from openpyxl.descriptors.nested import (
  9. NestedText,
  10. )
  11. from openpyxl.xml.constants import XPROPS_NS
  12. def get_version():
  13. from openpyxl import __version__
  14. VERSION = ".".join(__version__.split(".")[:2])
  15. return VERSION
  16. class DigSigBlob(Serialisable):
  17. __elements__ = __attrs__ = ()
  18. class VectorLpstr(Serialisable):
  19. __elements__ = __attrs__ = ()
  20. class VectorVariant(Serialisable):
  21. __elements__ = __attrs__ = ()
  22. class ExtendedProperties(Serialisable):
  23. """
  24. See 22.2
  25. Most of this is irrelevant
  26. """
  27. tagname = "Properties"
  28. Template = NestedText(expected_type=unicode, allow_none=True)
  29. Manager = NestedText(expected_type=unicode, allow_none=True)
  30. Company = NestedText(expected_type=unicode, allow_none=True)
  31. Pages = NestedText(expected_type=int, allow_none=True)
  32. Words = NestedText(expected_type=int,allow_none=True)
  33. Characters = NestedText(expected_type=int, allow_none=True)
  34. PresentationFormat = NestedText(expected_type=unicode, allow_none=True)
  35. Lines = NestedText(expected_type=int, allow_none=True)
  36. Paragraphs = NestedText(expected_type=int, allow_none=True)
  37. Slides = NestedText(expected_type=int, allow_none=True)
  38. Notes = NestedText(expected_type=int, allow_none=True)
  39. TotalTime = NestedText(expected_type=int, allow_none=True)
  40. HiddenSlides = NestedText(expected_type=int, allow_none=True)
  41. MMClips = NestedText(expected_type=int, allow_none=True)
  42. ScaleCrop = NestedText(expected_type=bool, allow_none=True)
  43. HeadingPairs = Typed(expected_type=VectorVariant, allow_none=True)
  44. TitlesOfParts = Typed(expected_type=VectorLpstr, allow_none=True)
  45. LinksUpToDate = NestedText(expected_type=bool, allow_none=True)
  46. CharactersWithSpaces = NestedText(expected_type=int, allow_none=True)
  47. SharedDoc = NestedText(expected_type=bool, allow_none=True)
  48. HyperlinkBase = NestedText(expected_type=unicode, allow_none=True)
  49. HLinks = Typed(expected_type=VectorVariant, allow_none=True)
  50. HyperlinksChanged = NestedText(expected_type=bool, allow_none=True)
  51. DigSig = Typed(expected_type=DigSigBlob, allow_none=True)
  52. Application = NestedText(expected_type=unicode, allow_none=True)
  53. AppVersion = NestedText(expected_type=unicode, allow_none=True)
  54. DocSecurity = NestedText(expected_type=int, allow_none=True)
  55. __elements__ = ('Application', 'AppVersion', 'DocSecurity', 'ScaleCrop',
  56. 'LinksUpToDate', 'SharedDoc', 'HyperlinksChanged')
  57. def __init__(self,
  58. Template=None,
  59. Manager=None,
  60. Company=None,
  61. Pages=None,
  62. Words=None,
  63. Characters=None,
  64. PresentationFormat=None,
  65. Lines=None,
  66. Paragraphs=None,
  67. Slides=None,
  68. Notes=None,
  69. TotalTime=None,
  70. HiddenSlides=None,
  71. MMClips=None,
  72. ScaleCrop=None,
  73. HeadingPairs=None,
  74. TitlesOfParts=None,
  75. LinksUpToDate=None,
  76. CharactersWithSpaces=None,
  77. SharedDoc=None,
  78. HyperlinkBase=None,
  79. HLinks=None,
  80. HyperlinksChanged=None,
  81. DigSig=None,
  82. Application="Microsoft Excel",
  83. AppVersion=None,
  84. DocSecurity=None,
  85. ):
  86. self.Template = Template
  87. self.Manager = Manager
  88. self.Company = Company
  89. self.Pages = Pages
  90. self.Words = Words
  91. self.Characters = Characters
  92. self.PresentationFormat = PresentationFormat
  93. self.Lines = Lines
  94. self.Paragraphs = Paragraphs
  95. self.Slides = Slides
  96. self.Notes = Notes
  97. self.TotalTime = TotalTime
  98. self.HiddenSlides = HiddenSlides
  99. self.MMClips = MMClips
  100. self.ScaleCrop = ScaleCrop
  101. self.HeadingPairs = None
  102. self.TitlesOfParts = None
  103. self.LinksUpToDate = LinksUpToDate
  104. self.CharactersWithSpaces = CharactersWithSpaces
  105. self.SharedDoc = SharedDoc
  106. self.HyperlinkBase = HyperlinkBase
  107. self.HLinks = None
  108. self.HyperlinksChanged = HyperlinksChanged
  109. self.DigSig = None
  110. self.Application = Application
  111. if AppVersion is None:
  112. AppVersion = get_version()
  113. self.AppVersion = AppVersion
  114. self.DocSecurity = DocSecurity
  115. def to_tree(self):
  116. tree = super(ExtendedProperties, self).to_tree()
  117. tree.set("xmlns", XPROPS_NS)
  118. return tree