stream_style.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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 StreamStyleFromColumn StreamStyle
  16. var StreamStyleDefaultString StreamStyle
  17. var StreamStyleBoldString StreamStyle
  18. var StreamStyleItalicString StreamStyle
  19. var StreamStyleUnderlinedString StreamStyle
  20. var StreamStyleDefaultInteger StreamStyle
  21. var StreamStyleBoldInteger StreamStyle
  22. var StreamStyleItalicInteger StreamStyle
  23. var StreamStyleUnderlinedInteger StreamStyle
  24. var StreamStyleDefaultDate StreamStyle
  25. var StreamStyleDefaultDecimal StreamStyle
  26. var FontBold *Font
  27. var FontItalic *Font
  28. var FontUnderlined *Font
  29. var FillGreen *Fill
  30. var FillRed *Fill
  31. var FillWhite *Fill
  32. func init() {
  33. // Init Fonts
  34. FontBold = DefaultFont()
  35. FontBold.Bold = true
  36. FontItalic = DefaultFont()
  37. FontItalic.Italic = true
  38. FontUnderlined = DefaultFont()
  39. FontUnderlined.Underline = true
  40. // Init Fills
  41. FillGreen = NewFill(Solid_Cell_Fill, RGB_Light_Green, RGB_White)
  42. FillRed = NewFill(Solid_Cell_Fill, RGB_Light_Red, RGB_White)
  43. FillWhite = DefaultFill()
  44. // Init default string styles
  45. StreamStyleDefaultString = MakeStringStyle(DefaultFont(), DefaultFill(), DefaultAlignment(), DefaultBorder())
  46. StreamStyleBoldString = MakeStringStyle(FontBold, DefaultFill(), DefaultAlignment(), DefaultBorder())
  47. StreamStyleItalicString = MakeStringStyle(FontItalic, DefaultFill(), DefaultAlignment(), DefaultBorder())
  48. StreamStyleUnderlinedString = MakeStringStyle(FontUnderlined, DefaultFill(), DefaultAlignment(), DefaultBorder())
  49. // Init default Integer styles
  50. StreamStyleDefaultInteger = MakeIntegerStyle(DefaultFont(), DefaultFill(), DefaultAlignment(), DefaultBorder())
  51. StreamStyleBoldInteger = MakeIntegerStyle(FontBold, DefaultFill(), DefaultAlignment(), DefaultBorder())
  52. StreamStyleItalicInteger = MakeIntegerStyle(FontItalic, DefaultFill(), DefaultAlignment(), DefaultBorder())
  53. StreamStyleUnderlinedInteger = MakeIntegerStyle(FontUnderlined, DefaultFill(), DefaultAlignment(), DefaultBorder())
  54. StreamStyleDefaultDate = MakeDateStyle(DefaultFont(), DefaultFill(), DefaultAlignment(), DefaultBorder())
  55. StreamStyleDefaultDecimal = MakeDecimalStyle(DefaultFont(), DefaultFill(), DefaultAlignment(), DefaultBorder())
  56. }
  57. // MakeStyle creates a new StreamStyle and add it to the styles that will be streamed
  58. // This function returns a reference to the created StreamStyle
  59. func MakeStyle(formatStyleId int, font *Font, fill *Fill, alignment *Alignment, border *Border) StreamStyle {
  60. newStyle := NewStyle()
  61. newStyle.Font = *font
  62. newStyle.Fill = *fill
  63. newStyle.Alignment = *alignment
  64. newStyle.Border = *border
  65. newStyle.ApplyFont = true
  66. newStyle.ApplyFill = true
  67. newStyle.ApplyAlignment = true
  68. newStyle.ApplyBorder = true
  69. newStreamStyle := StreamStyle{
  70. xNumFmtId: formatStyleId,
  71. style: newStyle,
  72. }
  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. }