stream_style.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package xlsx
  2. // StreamStyle has style and formatting information.
  3. // Used to store a style for streaming
  4. type StreamStyle struct {
  5. xNumFmtId int
  6. style *Style
  7. }
  8. const (
  9. GeneralFormat = 0
  10. IntegerFormat = 1
  11. DecimalFormat = 2
  12. DateFormat_dd_mm_yy = 14
  13. DateTimeFormat_d_m_yy_h_mm = 22
  14. )
  15. var Strings StreamStyle
  16. var BoldStrings StreamStyle
  17. var ItalicStrings StreamStyle
  18. var UnderlinedStrings StreamStyle
  19. var Integers StreamStyle
  20. var BoldIntegers StreamStyle
  21. var ItalicIntegers StreamStyle
  22. var UnderlinedIntegers StreamStyle
  23. var Dates StreamStyle
  24. var Decimals StreamStyle
  25. var Bold *Font
  26. var Italic *Font
  27. var Underlined *Font
  28. var GreenCell *Fill
  29. var RedCell *Fill
  30. var WhiteCel *Fill
  31. func init() {
  32. // Init Fonts
  33. Bold = DefaultFont()
  34. Bold.Bold = true
  35. Italic = DefaultFont()
  36. Italic.Italic = true
  37. Underlined = DefaultFont()
  38. Underlined.Underline = true
  39. // Init Fills
  40. GreenCell = NewFill(Solid_Cell_Fill, RGB_Light_Green, RGB_White)
  41. RedCell = NewFill(Solid_Cell_Fill, RGB_Light_Red, RGB_White)
  42. WhiteCel = DefaultFill()
  43. // Init default string styles
  44. Strings = MakeStringStyle(DefaultFont(), DefaultFill(), DefaultAlignment(), DefaultBorder())
  45. BoldStrings = MakeStringStyle(Bold, DefaultFill(), DefaultAlignment(), DefaultBorder())
  46. ItalicStrings = MakeStringStyle(Italic, DefaultFill(), DefaultAlignment(), DefaultBorder())
  47. UnderlinedStrings = MakeStringStyle(Underlined, DefaultFill(), DefaultAlignment(), DefaultBorder())
  48. // Init default Integer styles
  49. Integers = MakeIntegerStyle(DefaultFont(), DefaultFill(), DefaultAlignment(), DefaultBorder())
  50. BoldIntegers = MakeIntegerStyle(Bold, DefaultFill(), DefaultAlignment(), DefaultBorder())
  51. ItalicIntegers = MakeIntegerStyle(Italic, DefaultFill(), DefaultAlignment(), DefaultBorder())
  52. UnderlinedIntegers = MakeIntegerStyle(Underlined, DefaultFill(), DefaultAlignment(), DefaultBorder())
  53. Dates = MakeDateStyle(DefaultFont(), DefaultFill(), DefaultAlignment(), DefaultBorder())
  54. Decimals = MakeDecimalStyle(DefaultFont(), DefaultFill(), DefaultAlignment(), DefaultBorder())
  55. }
  56. // MakeStyle creates a new StreamStyle and add it to the styles that will be streamed
  57. // This function returns a reference to the created StreamStyle
  58. func MakeStyle(formatStyleId int, font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle {
  59. newStyle := NewStyle()
  60. newStyle.Font = *font
  61. newStyle.Fill = *fill
  62. newStyle.Alignment = *alignment
  63. newStyle.Border = *border
  64. newStyle.ApplyFont = true
  65. newStyle.ApplyFill = true
  66. newStyle.ApplyAlignment = true
  67. newStyle.ApplyBorder = true
  68. newStreamStyle := StreamStyle{
  69. xNumFmtId: formatStyleId,
  70. style: newStyle,
  71. }
  72. // DefaultStyles = append(DefaultStyles, newStreamStyle)
  73. return newStreamStyle
  74. }
  75. // MakeStringStyle creates a new style that can be used on cells with string data.
  76. // If used on other data the formatting might be wrong.
  77. func MakeStringStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle {
  78. return MakeStyle(GeneralFormat, font, fill, alignment, border)
  79. }
  80. // MakeIntegerStyle creates a new style that can be used on cells with integer data.
  81. // If used on other data the formatting might be wrong.
  82. func MakeIntegerStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle {
  83. return MakeStyle(IntegerFormat, font, fill, alignment, border)
  84. }
  85. // MakeDecimalStyle creates a new style that can be used on cells with decimal numeric data.
  86. // If used on other data the formatting might be wrong.
  87. func MakeDecimalStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle {
  88. return MakeStyle(DecimalFormat, font, fill, alignment, border)
  89. }
  90. // MakeDateStyle creates a new style that can be used on cells with Date data.
  91. // The formatting used is: dd_mm_yy
  92. // If used on other data the formatting might be wrong.
  93. func MakeDateStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle {
  94. return MakeStyle(DateFormat_dd_mm_yy, font, fill, alignment, border)
  95. }