write_xlsx 1.12.3 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +22 -0
  3. data/Changes +23 -0
  4. data/README.md +1 -1
  5. data/lib/write_xlsx/chart/area.rb +2 -2
  6. data/lib/write_xlsx/chart/axis.rb +55 -32
  7. data/lib/write_xlsx/chart/axis_writer.rb +528 -0
  8. data/lib/write_xlsx/chart/bar.rb +2 -2
  9. data/lib/write_xlsx/chart/caption.rb +16 -9
  10. data/lib/write_xlsx/chart/chart_area.rb +121 -0
  11. data/lib/write_xlsx/chart/column.rb +2 -2
  12. data/lib/write_xlsx/chart/d_pt_point_writer.rb +14 -0
  13. data/lib/write_xlsx/chart/doughnut.rb +0 -3
  14. data/lib/write_xlsx/chart/formatting_writer.rb +652 -0
  15. data/lib/write_xlsx/chart/initialization.rb +100 -0
  16. data/lib/write_xlsx/chart/line.rb +4 -3
  17. data/lib/write_xlsx/chart/pie.rb +6 -2
  18. data/lib/write_xlsx/chart/radar.rb +2 -2
  19. data/lib/write_xlsx/chart/scatter.rb +4 -3
  20. data/lib/write_xlsx/chart/series.rb +35 -15
  21. data/lib/write_xlsx/chart/series_data.rb +132 -0
  22. data/lib/write_xlsx/chart/series_writer.rb +318 -0
  23. data/lib/write_xlsx/chart/settings.rb +226 -0
  24. data/lib/write_xlsx/chart/stock.rb +2 -2
  25. data/lib/write_xlsx/chart/table.rb +50 -0
  26. data/lib/write_xlsx/chart/xml_writer.rb +305 -0
  27. data/lib/write_xlsx/chart.rb +286 -2477
  28. data/lib/write_xlsx/chartsheet.rb +35 -83
  29. data/lib/write_xlsx/constants.rb +11 -0
  30. data/lib/write_xlsx/drawing.rb +5 -3
  31. data/lib/write_xlsx/format/alignment_state.rb +39 -0
  32. data/lib/write_xlsx/format/alignment_style.rb +92 -0
  33. data/lib/write_xlsx/format/border_state.rb +47 -0
  34. data/lib/write_xlsx/format/border_style.rb +116 -0
  35. data/lib/write_xlsx/format/fill_state.rb +26 -0
  36. data/lib/write_xlsx/format/fill_style.rb +52 -0
  37. data/lib/write_xlsx/format/font_state.rb +74 -0
  38. data/lib/write_xlsx/format/font_style.rb +172 -0
  39. data/lib/write_xlsx/format/format_state.rb +65 -0
  40. data/lib/write_xlsx/format/number_format_state.rb +20 -0
  41. data/lib/write_xlsx/format/number_format_style.rb +28 -0
  42. data/lib/write_xlsx/format/protection_state.rb +20 -0
  43. data/lib/write_xlsx/format/protection_style.rb +28 -0
  44. data/lib/write_xlsx/format.rb +1093 -426
  45. data/lib/write_xlsx/formats.rb +0 -2
  46. data/lib/write_xlsx/image_property.rb +4 -1
  47. data/lib/write_xlsx/inserted_chart.rb +1 -1
  48. data/lib/write_xlsx/object_positioning.rb +203 -0
  49. data/lib/write_xlsx/package/app.rb +3 -3
  50. data/lib/write_xlsx/package/button.rb +6 -2
  51. data/lib/write_xlsx/package/comments.rb +11 -3
  52. data/lib/write_xlsx/package/conditional_format.rb +7 -3
  53. data/lib/write_xlsx/package/content_types.rb +2 -2
  54. data/lib/write_xlsx/package/core.rb +2 -2
  55. data/lib/write_xlsx/package/custom.rb +3 -2
  56. data/lib/write_xlsx/package/metadata.rb +2 -2
  57. data/lib/write_xlsx/package/packager.rb +0 -3
  58. data/lib/write_xlsx/package/relationships.rb +2 -2
  59. data/lib/write_xlsx/package/rich_value.rb +4 -2
  60. data/lib/write_xlsx/package/rich_value_rel.rb +2 -2
  61. data/lib/write_xlsx/package/rich_value_structure.rb +2 -2
  62. data/lib/write_xlsx/package/rich_value_types.rb +3 -3
  63. data/lib/write_xlsx/package/shared_strings.rb +2 -2
  64. data/lib/write_xlsx/package/styles.rb +13 -9
  65. data/lib/write_xlsx/package/table.rb +8 -2
  66. data/lib/write_xlsx/package/theme.rb +0 -3
  67. data/lib/write_xlsx/package/vml.rb +2 -2
  68. data/lib/write_xlsx/page_setup.rb +192 -0
  69. data/lib/write_xlsx/shape.rb +97 -100
  70. data/lib/write_xlsx/sheets.rb +9 -4
  71. data/lib/write_xlsx/sparkline.rb +2 -2
  72. data/lib/write_xlsx/utility/cell_reference.rb +124 -0
  73. data/lib/write_xlsx/utility/chart_formatting.rb +262 -0
  74. data/lib/write_xlsx/utility/common.rb +44 -0
  75. data/lib/write_xlsx/utility/date_time.rb +113 -0
  76. data/lib/write_xlsx/utility/dimensions.rb +40 -0
  77. data/lib/write_xlsx/utility/drawing.rb +136 -0
  78. data/lib/write_xlsx/utility/rich_text.rb +184 -0
  79. data/lib/write_xlsx/utility/sheetname_quoting.rb +73 -0
  80. data/lib/write_xlsx/utility/string_width.rb +45 -0
  81. data/lib/write_xlsx/utility/url.rb +27 -0
  82. data/lib/write_xlsx/utility/xml_primitives.rb +32 -0
  83. data/lib/write_xlsx/version.rb +1 -1
  84. data/lib/write_xlsx/workbook/chart_data.rb +188 -0
  85. data/lib/write_xlsx/workbook/format_preparation.rb +199 -0
  86. data/lib/write_xlsx/workbook/initialization.rb +223 -0
  87. data/lib/write_xlsx/workbook/package_preparation.rb +231 -0
  88. data/lib/write_xlsx/workbook/workbook_writer.rb +164 -0
  89. data/lib/write_xlsx/workbook.rb +143 -981
  90. data/lib/write_xlsx/worksheet/asset_manager.rb +60 -0
  91. data/lib/write_xlsx/worksheet/autofilter.rb +390 -0
  92. data/lib/write_xlsx/worksheet/cell_data.rb +13 -6
  93. data/lib/write_xlsx/worksheet/cell_data_manager.rb +47 -0
  94. data/lib/write_xlsx/worksheet/cell_data_store.rb +61 -0
  95. data/lib/write_xlsx/worksheet/columns.rb +204 -0
  96. data/lib/write_xlsx/worksheet/comments_support.rb +61 -0
  97. data/lib/write_xlsx/worksheet/conditional_formats.rb +30 -0
  98. data/lib/write_xlsx/worksheet/data_validation.rb +9 -1
  99. data/lib/write_xlsx/worksheet/data_writing.rb +1017 -0
  100. data/lib/write_xlsx/worksheet/drawing_methods.rb +308 -0
  101. data/lib/write_xlsx/worksheet/drawing_preparation.rb +290 -0
  102. data/lib/write_xlsx/worksheet/drawing_relations.rb +76 -0
  103. data/lib/write_xlsx/worksheet/drawing_xml_writer.rb +50 -0
  104. data/lib/write_xlsx/worksheet/formatting.rb +418 -0
  105. data/lib/write_xlsx/worksheet/hyperlink.rb +9 -1
  106. data/lib/write_xlsx/worksheet/initialization.rb +146 -0
  107. data/lib/write_xlsx/worksheet/panes.rb +64 -0
  108. data/lib/write_xlsx/worksheet/print_options.rb +72 -0
  109. data/lib/write_xlsx/worksheet/protection.rb +65 -0
  110. data/lib/write_xlsx/worksheet/rich_text_helpers.rb +78 -0
  111. data/lib/write_xlsx/worksheet/row_col_sizing.rb +69 -0
  112. data/lib/write_xlsx/worksheet/rows.rb +84 -0
  113. data/lib/write_xlsx/worksheet/selection.rb +41 -0
  114. data/lib/write_xlsx/worksheet/xml_writer.rb +1246 -0
  115. data/lib/write_xlsx/worksheet.rb +376 -4530
  116. metadata +66 -4
  117. data/lib/write_xlsx/utility.rb +0 -986
  118. data/lib/write_xlsx/worksheet/page_setup.rb +0 -192
@@ -0,0 +1,172 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class FontStyle
7
+ def initialize(format)
8
+ @format = format
9
+ end
10
+
11
+ def index
12
+ @format.state.font.index
13
+ end
14
+
15
+ def index=(value)
16
+ @format.state.font.index = value
17
+ end
18
+
19
+ def name
20
+ @format.state.font.name
21
+ end
22
+
23
+ def name=(value)
24
+ @format.state.font.name = value
25
+ end
26
+
27
+ def size
28
+ @format.state.font.size
29
+ end
30
+
31
+ def size=(value)
32
+ @format.state.font.size = value
33
+ end
34
+
35
+ def bold
36
+ @format.state.font.bold
37
+ end
38
+
39
+ def bold=(value)
40
+ @format.state.font.bold = value
41
+ end
42
+
43
+ def italic
44
+ @format.state.font.italic
45
+ end
46
+
47
+ def italic=(value)
48
+ @format.state.font.italic = value
49
+ end
50
+
51
+ def color
52
+ @format.state.font.color
53
+ end
54
+
55
+ def color=(value)
56
+ @format.state.font.color = value
57
+ end
58
+
59
+ def color_indexed
60
+ @format.state.font.color_indexed
61
+ end
62
+
63
+ def color_indexed=(value)
64
+ @format.state.font.color_indexed = value
65
+ end
66
+
67
+ def underline
68
+ @format.state.font.underline
69
+ end
70
+
71
+ def underline=(value)
72
+ @format.state.font.underline = value
73
+ end
74
+
75
+ def strikeout
76
+ @format.state.font.strikeout
77
+ end
78
+
79
+ def strikeout=(value)
80
+ @format.state.font.strikeout = value
81
+ end
82
+
83
+ def outline
84
+ @format.state.font.outline
85
+ end
86
+
87
+ def outline=(value)
88
+ @format.state.font.outline = value
89
+ end
90
+
91
+ def shadow
92
+ @format.state.font.shadow
93
+ end
94
+
95
+ def shadow=(value)
96
+ @format.state.font.shadow = value
97
+ end
98
+
99
+ def script
100
+ @format.state.font.script
101
+ end
102
+
103
+ def script=(value)
104
+ @format.state.font.script = value
105
+ end
106
+
107
+ def family
108
+ @format.state.font.family
109
+ end
110
+
111
+ def family=(value)
112
+ @format.state.font.family = value
113
+ end
114
+
115
+ def charset
116
+ @format.state.font.charset
117
+ end
118
+
119
+ def charset=(value)
120
+ @format.state.font.charset = value
121
+ end
122
+
123
+ def scheme
124
+ @format.state.font.scheme
125
+ end
126
+
127
+ def scheme=(value)
128
+ @format.state.font.scheme = value
129
+ end
130
+
131
+ def condense
132
+ @format.state.font.condense
133
+ end
134
+
135
+ def condense=(value)
136
+ @format.state.font.condense = value
137
+ end
138
+
139
+ def extend
140
+ @format.state.font.extend
141
+ end
142
+
143
+ def extend=(value)
144
+ @format.state.font.extend = value
145
+ end
146
+
147
+ def theme
148
+ @format.state.font.theme
149
+ end
150
+
151
+ def theme=(value)
152
+ @format.state.font.theme = value
153
+ end
154
+
155
+ def hyperlink
156
+ @format.state.font.hyperlink
157
+ end
158
+
159
+ def hyperlink=(value)
160
+ @format.state.font.hyperlink = value
161
+ end
162
+
163
+ def color_indexed
164
+ @format.state.font.color_indexed
165
+ end
166
+
167
+ def color_indexed=(value)
168
+ @format.state.font.color_indexed = value
169
+ end
170
+ end
171
+ end
172
+ end
@@ -0,0 +1,65 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class FormatState
7
+ attr_accessor :fill, :border, :font, :alignment, :protection, :number_format
8
+ attr_accessor :xf_index, :dxf_index, :xf_id
9
+ attr_accessor :quote_prefix
10
+ attr_accessor :has_fill, :has_font, :has_border
11
+ attr_accessor :has_dxf_fill, :has_dxf_font, :has_dxf_border
12
+ attr_accessor :dxf_fg_color, :dxf_bg_color
13
+ attr_accessor :used_as_dxf
14
+
15
+ def initialize
16
+ @fill = FillState.new
17
+ @border = BorderState.new
18
+ @font = FontState.new
19
+ @alignment = AlignmentState.new
20
+ @protection = ProtectionState.new
21
+ @number_format = NumberFormatState.new
22
+
23
+ @xf_index = nil
24
+ @dxf_index = nil
25
+ @xf_id = 0
26
+
27
+ @quote_prefix = 0
28
+ @has_fill = false
29
+ @has_font = false
30
+ @has_border = false
31
+ @has_dxf_fill = false
32
+ @has_dxf_font = false
33
+ @has_dxf_border = false
34
+ @dxf_fg_color = nil
35
+ @dxf_bg_color = nil
36
+
37
+ @used_as_dxf = false
38
+ end
39
+
40
+ def initialize_copy(other)
41
+ @fill = other.fill&.dup
42
+ @border = other.border&.dup
43
+ @font = other.font&.dup
44
+ @alignment = other.alignment&.dup
45
+ @protection = other.protection&.dup
46
+ @number_format = other.number_format&.dup
47
+
48
+ @xf_index = nil
49
+ @dxf_index = nil
50
+ @xf_id = other.xf_id
51
+ @quote_prefix = other.quote_prefix
52
+ @has_fill = false
53
+ @has_font = false
54
+ @has_border = false
55
+ @has_dxf_fill = false
56
+ @has_dxf_font = false
57
+ @has_dxf_border = false
58
+ @dxf_fg_color = other.dxf_fg_color
59
+ @dxf_bg_color = other.dxf_bg_color
60
+
61
+ @used_as_dxf = other.used_as_dxf
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class NumberFormatState
7
+ attr_accessor :format_code, :index
8
+
9
+ def initialize
10
+ @format_code = 'General'
11
+ @index = 0
12
+ end
13
+
14
+ def initialize_copy(other)
15
+ @format_code = other.format_code
16
+ @index = other.index
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class NumberFormatStyle
7
+ def initialize(format)
8
+ @format = format
9
+ end
10
+
11
+ def format_code
12
+ @format.state.number_format.format_code
13
+ end
14
+
15
+ def format_code=(value)
16
+ @format.state.number_format.format_code = value
17
+ end
18
+
19
+ def index
20
+ @format.state.number_format.index
21
+ end
22
+
23
+ def index=(value)
24
+ @format.state.number_format.index = value
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class ProtectionState
7
+ attr_accessor :locked, :hidden
8
+
9
+ def initialize
10
+ @locked = 1
11
+ @hidden = 0
12
+ end
13
+
14
+ def initialize_copy(other)
15
+ @locked = other.locked
16
+ @hidden = other.hidden
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ module Writexlsx
5
+ class Format
6
+ class ProtectionStyle
7
+ def initialize(format)
8
+ @format = format
9
+ end
10
+
11
+ def locked
12
+ @format.state.protection.locked
13
+ end
14
+
15
+ def locked=(value)
16
+ @format.state.protection.locked = value
17
+ end
18
+
19
+ def hidden
20
+ @format.state.protection.hidden
21
+ end
22
+
23
+ def hidden=(value)
24
+ @format.state.protection.hidden = value
25
+ end
26
+ end
27
+ end
28
+ end