stream_style.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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 DefaultStyles []StreamStyle
  24. var Bold *Font
  25. var Italic *Font
  26. var Underlined *Font
  27. var GreenCell *Fill
  28. var RedCell *Fill
  29. var WhiteCel *Fill
  30. func init(){
  31. // Init Fonts
  32. Bold = DefaultFont()
  33. Bold.Bold = true
  34. Italic = DefaultFont()
  35. Italic.Italic = true
  36. Underlined = DefaultFont()
  37. Underlined.Underline = true
  38. // Init Fills
  39. GreenCell = NewFill(Solid_Cell_Fill, RGB_Light_Green, RGB_White)
  40. RedCell = NewFill(Solid_Cell_Fill, RGB_Light_Red, RGB_White)
  41. WhiteCel = DefaultFill()
  42. // Init default string styles
  43. Strings = MakeStringStyle(DefaultFont(), DefaultFill(), DefaultAlignment(), DefaultBorder())
  44. BoldStrings = MakeStringStyle(Bold, DefaultFill(), DefaultAlignment(), DefaultBorder())
  45. ItalicStrings = MakeStringStyle(Italic, DefaultFill(), DefaultAlignment(), DefaultBorder())
  46. UnderlinedStrings = MakeStringStyle(Underlined, DefaultFill(), DefaultAlignment(), DefaultBorder())
  47. DefaultStyles = append(DefaultStyles, Strings)
  48. DefaultStyles = append(DefaultStyles, BoldStrings)
  49. DefaultStyles = append(DefaultStyles, ItalicStrings)
  50. DefaultStyles = append(DefaultStyles, UnderlinedStrings)
  51. // Init default Integer styles
  52. Integers = MakeIntegerStyle(DefaultFont(), DefaultFill(), DefaultAlignment(), DefaultBorder())
  53. BoldIntegers = MakeIntegerStyle(Bold, DefaultFill(), DefaultAlignment(), DefaultBorder())
  54. ItalicIntegers = MakeIntegerStyle(Italic, DefaultFill(), DefaultAlignment(), DefaultBorder())
  55. UnderlinedIntegers = MakeIntegerStyle(Underlined, DefaultFill(), DefaultAlignment(), DefaultBorder())
  56. DefaultStyles = append(DefaultStyles, Integers)
  57. DefaultStyles = append(DefaultStyles, BoldIntegers)
  58. DefaultStyles = append(DefaultStyles, ItalicIntegers)
  59. DefaultStyles = append(DefaultStyles, UnderlinedIntegers)
  60. }
  61. // MakeStyle creates a new StreamStyle and add it to the styles that will be streamed
  62. // This function returns a reference to the created StreamStyle
  63. func MakeStyle(formatStyleId int, font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle {
  64. newStyle := NewStyle()
  65. newStyle.Font = *font
  66. newStyle.Fill = *fill
  67. newStyle.Alignment = *alignment
  68. newStyle.Border = *border
  69. newStyle.ApplyFont = true
  70. newStyle.ApplyFill = true
  71. newStyle.ApplyAlignment = true
  72. newStyle.ApplyBorder = true
  73. newStreamStyle := StreamStyle{
  74. xNumFmtId: formatStyleId,
  75. style: newStyle,
  76. }
  77. DefaultStyles = append(DefaultStyles, newStreamStyle)
  78. return newStreamStyle
  79. }
  80. // MakeStringStyle creates a new style that can be used on cells with string data.
  81. // If used on other data the formatting might be wrong.
  82. func MakeStringStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle{
  83. return MakeStyle(GeneralFormat, font, fill, alignment, border)
  84. }
  85. // MakeIntegerStyle creates a new style that can be used on cells with integer data.
  86. // If used on other data the formatting might be wrong.
  87. func MakeIntegerStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle{
  88. return MakeStyle(IntegerFormat, font, fill, alignment, border)
  89. }
  90. // MakeDecimalStyle creates a new style that can be used on cells with decimal numeric data.
  91. // If used on other data the formatting might be wrong.
  92. func MakeDecimalStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle{
  93. return MakeStyle(DecimalFormat, font, fill, alignment, border)
  94. }
  95. // MakeDateStyle creates a new style that can be used on cells with Date data.
  96. // The formatting used is: dd_mm_yy
  97. // If used on other data the formatting might be wrong.
  98. func MakeDateStyle(font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle{
  99. return MakeStyle(DateFormat_dd_mm_yy, font, fill, alignment, border)
  100. }