hyperlink.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from __future__ import absolute_import
  2. # Copyright (c) 2010-2019 openpyxl
  3. from openpyxl.descriptors.serialisable import Serialisable
  4. from openpyxl.descriptors import (
  5. String,
  6. Sequence,
  7. )
  8. from openpyxl.descriptors.excel import Relation
  9. class Hyperlink(Serialisable):
  10. tagname = "hyperlink"
  11. ref = String()
  12. location = String(allow_none=True)
  13. tooltip = String(allow_none=True)
  14. display = String(allow_none=True)
  15. id = Relation()
  16. target = String(allow_none=True)
  17. __attrs__ = ("ref", "location", "tooltip", "display", "id")
  18. def __init__(self,
  19. ref=None,
  20. location=None,
  21. tooltip=None,
  22. display=None,
  23. id=None,
  24. target=None,
  25. ):
  26. self.ref = ref
  27. self.location = location
  28. self.tooltip = tooltip
  29. self.display = display
  30. self.id = id
  31. self.target = target
  32. class HyperlinkList(Serialisable):
  33. tagname = "hyperlinks"
  34. hyperlink = Sequence(expected_type=Hyperlink)
  35. def __init__(self, hyperlink=()):
  36. self.hyperlink = hyperlink
  37. def __bool__(self):
  38. return bool(self.hyperlink)
  39. __nonzero__ = __bool__
  40. def __len__(self):
  41. return len(self.hyperlink)
  42. def append(self, value):
  43. values = self.hyperlink[:]
  44. values.append(value)
  45. if not value.id:
  46. value.id = "rId{0}".format(len(values))
  47. self.hyperlink = values