trendline.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. # Copyright (c) 2010-2019 openpyxl
  2. from openpyxl.descriptors.serialisable import Serialisable
  3. from openpyxl.descriptors import (
  4. Typed,
  5. String,
  6. Alias
  7. )
  8. from openpyxl.descriptors.excel import ExtensionList
  9. from openpyxl.descriptors.nested import (
  10. NestedBool,
  11. NestedInteger,
  12. NestedFloat,
  13. NestedSet
  14. )
  15. from .data_source import NumFmt
  16. from .shapes import GraphicalProperties
  17. from .text import RichText, Text
  18. from .layout import Layout
  19. class TrendlineLabel(Serialisable):
  20. tagname = "trendlineLbl"
  21. layout = Typed(expected_type=Layout, allow_none=True)
  22. tx = Typed(expected_type=Text, allow_none=True)
  23. numFmt = Typed(expected_type=NumFmt, allow_none=True)
  24. spPr = Typed(expected_type=GraphicalProperties, allow_none=True)
  25. graphicalProperties = Alias("spPr")
  26. txPr = Typed(expected_type=RichText, allow_none=True)
  27. textProperties = Alias("txPr")
  28. extLst = Typed(expected_type=ExtensionList, allow_none=True)
  29. __elements__ = ('layout', 'tx', 'numFmt', 'spPr', 'txPr')
  30. def __init__(self,
  31. layout=None,
  32. tx=None,
  33. numFmt=None,
  34. spPr=None,
  35. txPr=None,
  36. extLst=None,
  37. ):
  38. self.layout = layout
  39. self.tx = tx
  40. self.numFmt = numFmt
  41. self.spPr = spPr
  42. self.txPr = txPr
  43. class Trendline(Serialisable):
  44. tagname = "trendline"
  45. name = String(allow_none=True)
  46. spPr = Typed(expected_type=GraphicalProperties, allow_none=True)
  47. graphicalProperties = Alias('spPr')
  48. trendlineType = NestedSet(values=(['exp', 'linear', 'log', 'movingAvg', 'poly', 'power']))
  49. order = NestedInteger(allow_none=True)
  50. period = NestedInteger(allow_none=True)
  51. forward = NestedFloat(allow_none=True)
  52. backward = NestedFloat(allow_none=True)
  53. intercept = NestedFloat(allow_none=True)
  54. dispRSqr = NestedBool(allow_none=True)
  55. dispEq = NestedBool(allow_none=True)
  56. trendlineLbl = Typed(expected_type=TrendlineLabel, allow_none=True)
  57. extLst = Typed(expected_type=ExtensionList, allow_none=True)
  58. __elements__ = ('name', 'spPr', 'trendlineType', 'order', 'period',
  59. 'forward', 'backward', 'intercept', 'dispRSqr', 'dispEq', 'trendlineLbl')
  60. def __init__(self,
  61. name=None,
  62. spPr=None,
  63. trendlineType='linear',
  64. order=None,
  65. period=None,
  66. forward=None,
  67. backward=None,
  68. intercept=None,
  69. dispRSqr=None,
  70. dispEq=None,
  71. trendlineLbl=None,
  72. extLst=None,
  73. ):
  74. self.name = name
  75. self.spPr = spPr
  76. self.trendlineType = trendlineType
  77. self.order = order
  78. self.period = period
  79. self.forward = forward
  80. self.backward = backward
  81. self.intercept = intercept
  82. self.dispRSqr = dispRSqr
  83. self.dispEq = dispEq
  84. self.trendlineLbl = trendlineLbl