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