write_xlsx 1.12.3 → 1.13.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 (38) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -0
  3. data/Changes +3 -0
  4. data/README.md +1 -1
  5. data/lib/write_xlsx/chartsheet.rb +4 -1
  6. data/lib/write_xlsx/object_positioning.rb +189 -0
  7. data/lib/write_xlsx/package/app.rb +1 -1
  8. data/lib/write_xlsx/page_setup.rb +190 -0
  9. data/lib/write_xlsx/sheets.rb +3 -3
  10. data/lib/write_xlsx/utility.rb +57 -9
  11. data/lib/write_xlsx/version.rb +1 -1
  12. data/lib/write_xlsx/workbook.rb +34 -34
  13. data/lib/write_xlsx/worksheet/asset_manager.rb +60 -0
  14. data/lib/write_xlsx/worksheet/autofilter.rb +388 -0
  15. data/lib/write_xlsx/worksheet/cell_data.rb +8 -5
  16. data/lib/write_xlsx/worksheet/cell_data_manager.rb +47 -0
  17. data/lib/write_xlsx/worksheet/cell_data_store.rb +61 -0
  18. data/lib/write_xlsx/worksheet/columns.rb +199 -0
  19. data/lib/write_xlsx/worksheet/comments_support.rb +61 -0
  20. data/lib/write_xlsx/worksheet/conditional_formats.rb +30 -0
  21. data/lib/write_xlsx/worksheet/data_writing.rb +990 -0
  22. data/lib/write_xlsx/worksheet/drawing_methods.rb +308 -0
  23. data/lib/write_xlsx/worksheet/drawing_preparation.rb +290 -0
  24. data/lib/write_xlsx/worksheet/drawing_relations.rb +76 -0
  25. data/lib/write_xlsx/worksheet/drawing_xml_writer.rb +50 -0
  26. data/lib/write_xlsx/worksheet/formatting.rb +416 -0
  27. data/lib/write_xlsx/worksheet/initialization.rb +146 -0
  28. data/lib/write_xlsx/worksheet/panes.rb +64 -0
  29. data/lib/write_xlsx/worksheet/print_options.rb +72 -0
  30. data/lib/write_xlsx/worksheet/protection.rb +65 -0
  31. data/lib/write_xlsx/worksheet/rich_text_helpers.rb +78 -0
  32. data/lib/write_xlsx/worksheet/row_col_sizing.rb +67 -0
  33. data/lib/write_xlsx/worksheet/rows.rb +84 -0
  34. data/lib/write_xlsx/worksheet/selection.rb +41 -0
  35. data/lib/write_xlsx/worksheet/xml_writer.rb +1241 -0
  36. data/lib/write_xlsx/worksheet.rb +359 -4530
  37. metadata +26 -3
  38. data/lib/write_xlsx/worksheet/page_setup.rb +0 -192
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: write_xlsx
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.3
4
+ version: 1.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hideo NAKAMURA
@@ -264,6 +264,7 @@ files:
264
264
  - lib/write_xlsx/image.rb
265
265
  - lib/write_xlsx/image_property.rb
266
266
  - lib/write_xlsx/inserted_chart.rb
267
+ - lib/write_xlsx/object_positioning.rb
267
268
  - lib/write_xlsx/package/app.rb
268
269
  - lib/write_xlsx/package/button.rb
269
270
  - lib/write_xlsx/package/comments.rb
@@ -284,6 +285,7 @@ files:
284
285
  - lib/write_xlsx/package/theme.rb
285
286
  - lib/write_xlsx/package/vml.rb
286
287
  - lib/write_xlsx/package/xml_writer_simple.rb
288
+ - lib/write_xlsx/page_setup.rb
287
289
  - lib/write_xlsx/shape.rb
288
290
  - lib/write_xlsx/sheets.rb
289
291
  - lib/write_xlsx/sparkline.rb
@@ -291,10 +293,31 @@ files:
291
293
  - lib/write_xlsx/version.rb
292
294
  - lib/write_xlsx/workbook.rb
293
295
  - lib/write_xlsx/worksheet.rb
296
+ - lib/write_xlsx/worksheet/asset_manager.rb
297
+ - lib/write_xlsx/worksheet/autofilter.rb
294
298
  - lib/write_xlsx/worksheet/cell_data.rb
299
+ - lib/write_xlsx/worksheet/cell_data_manager.rb
300
+ - lib/write_xlsx/worksheet/cell_data_store.rb
301
+ - lib/write_xlsx/worksheet/columns.rb
302
+ - lib/write_xlsx/worksheet/comments_support.rb
303
+ - lib/write_xlsx/worksheet/conditional_formats.rb
295
304
  - lib/write_xlsx/worksheet/data_validation.rb
305
+ - lib/write_xlsx/worksheet/data_writing.rb
306
+ - lib/write_xlsx/worksheet/drawing_methods.rb
307
+ - lib/write_xlsx/worksheet/drawing_preparation.rb
308
+ - lib/write_xlsx/worksheet/drawing_relations.rb
309
+ - lib/write_xlsx/worksheet/drawing_xml_writer.rb
310
+ - lib/write_xlsx/worksheet/formatting.rb
296
311
  - lib/write_xlsx/worksheet/hyperlink.rb
297
- - lib/write_xlsx/worksheet/page_setup.rb
312
+ - lib/write_xlsx/worksheet/initialization.rb
313
+ - lib/write_xlsx/worksheet/panes.rb
314
+ - lib/write_xlsx/worksheet/print_options.rb
315
+ - lib/write_xlsx/worksheet/protection.rb
316
+ - lib/write_xlsx/worksheet/rich_text_helpers.rb
317
+ - lib/write_xlsx/worksheet/row_col_sizing.rb
318
+ - lib/write_xlsx/worksheet/rows.rb
319
+ - lib/write_xlsx/worksheet/selection.rb
320
+ - lib/write_xlsx/worksheet/xml_writer.rb
298
321
  - lib/write_xlsx/zip_file_utils.rb
299
322
  - write_xlsx.gemspec
300
323
  homepage: https://github.com/cxn03651/write_xlsx#readme
@@ -315,7 +338,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
315
338
  - !ruby/object:Gem::Version
316
339
  version: '0'
317
340
  requirements: []
318
- rubygems_version: 3.6.7
341
+ rubygems_version: 4.0.3
319
342
  specification_version: 4
320
343
  summary: write_xlsx is a gem to create a new file in the Excel 2007+ XLSX format.
321
344
  test_files: []
@@ -1,192 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- # frozen_string_literal: true
3
-
4
- module Writexlsx
5
- class Worksheet
6
- class PageSetup # :nodoc:
7
- include Writexlsx::Utility
8
-
9
- attr_accessor :margin_left, :margin_right, :margin_top, :margin_bottom # :nodoc:
10
- attr_accessor :margin_header, :margin_footer # :nodoc:
11
- attr_accessor :repeat_rows, :repeat_cols, :print_area # :nodoc:
12
- attr_accessor :hbreaks, :vbreaks, :scale # :nodoc:
13
- attr_accessor :fit_page, :fit_width, :fit_height, :page_setup_changed # :nodoc:
14
- attr_writer :across # :nodoc:
15
- attr_accessor :orientation, :print_options_changed, :black_white # :nodoc:
16
- attr_accessor :header, :footer, :header_footer_changed, :header_footer_aligns, :header_footer_scales
17
- attr_writer :page_start
18
- attr_writer :horizontal_dpi, :vertical_dpi
19
-
20
- def initialize # :nodoc:
21
- @margin_left = 0.7
22
- @margin_right = 0.7
23
- @margin_top = 0.75
24
- @margin_bottom = 0.75
25
- @margin_header = 0.3
26
- @margin_footer = 0.3
27
- @repeat_rows = ''
28
- @repeat_cols = ''
29
- @print_area = ''
30
- @hbreaks = []
31
- @vbreaks = []
32
- @scale = 100
33
- @fit_page = false
34
- @fit_width = nil
35
- @fit_height = nil
36
- @page_setup_changed = false
37
- @across = false
38
- @orientation = true
39
- @header_footer_aligns = true
40
- @header_footer_scales = true
41
- end
42
-
43
- def paper=(paper_size)
44
- if paper_size
45
- @paper_size = paper_size
46
- @page_setup_changed = true
47
- end
48
- end
49
-
50
- def center_horizontally
51
- @print_options_changed = true
52
- @hcenter = true
53
- end
54
-
55
- def center_vertically
56
- @print_options_changed = true
57
- @vcenter = true
58
- end
59
-
60
- def print_row_col_headers(headers)
61
- if headers
62
- @print_headers = true
63
- @print_options_changed = true
64
- else
65
- @print_headers = false
66
- end
67
- end
68
-
69
- def hide_gridlines(option)
70
- if option == 0 || !option
71
- @print_gridlines = true
72
- @print_options_changed = true
73
- else
74
- @print_gridlines = false
75
- end
76
- end
77
-
78
- #
79
- # Write the <pageSetup> element.
80
- #
81
- # The following is an example taken from Excel.
82
- #
83
- # <pageSetup
84
- # paperSize="9"
85
- # scale="110"
86
- # fitToWidth="2"
87
- # fitToHeight="2"
88
- # pageOrder="overThenDown"
89
- # orientation="portrait"
90
- # useFirstPageNumber="1"
91
- # blackAndWhite="1"
92
- # draft="1"
93
- # horizontalDpi="200"
94
- # verticalDpi="200"
95
- # r:id="rId1"
96
- # />
97
- #
98
- def write_page_setup(writer) # :nodoc:
99
- return unless @page_setup_changed
100
-
101
- attributes = []
102
- attributes << ['paperSize', @paper_size] if @paper_size
103
- attributes << ['scale', @scale] if @scale != 100
104
- attributes << ['fitToWidth', @fit_width] if @fit_page && @fit_width != 1
105
- attributes << ['fitToHeight', @fit_height] if @fit_page && @fit_height != 1
106
- attributes << %w[pageOrder overThenDown] if @across
107
- attributes << ['firstPageNumber', @page_start] if @page_start && @page_start > 1
108
- attributes << ['orientation',
109
- if @orientation
110
- 'portrait'
111
- else
112
- 'landscape'
113
- end]
114
- attributes << ['blackAndWhite', 1] if @black_white
115
- attributes << ['useFirstPageNumber', 1] if ptrue?(@page_start)
116
-
117
- # Set the DPI. Mainly only for testing.
118
- attributes << ['horizontalDpi', @horizontal_dpi] if @horizontal_dpi
119
- attributes << ['verticalDpi', @vertical_dpi] if @vertical_dpi
120
-
121
- writer.empty_tag('pageSetup', attributes)
122
- end
123
-
124
- #
125
- # Write the <pageMargins> element.
126
- #
127
- def write_page_margins(writer) # :nodoc:
128
- writer.empty_tag('pageMargins', margin_attributes)
129
- end
130
-
131
- #
132
- # Write the <printOptions> element.
133
- #
134
- def write_print_options(writer) # :nodoc:
135
- return unless @print_options_changed
136
-
137
- attributes = []
138
- attributes << ['horizontalCentered', 1] if @hcenter
139
- attributes << ['verticalCentered', 1] if @vcenter
140
- attributes << ['headings', 1] if @print_headers
141
- attributes << ['gridLines', 1] if @print_gridlines
142
- writer.empty_tag('printOptions', attributes)
143
- end
144
-
145
- #
146
- # Write the <headerFooter> element.
147
- #
148
- def write_header_footer(writer, excel2003_style) # :nodoc:
149
- tag = 'headerFooter'
150
- attributes = []
151
- attributes << ['scaleWithDoc', 0] unless ptrue?(@header_footer_scales)
152
- attributes << ['alignWithMargins', 0] unless ptrue?(@header_footer_aligns)
153
-
154
- if @header_footer_changed
155
- writer.tag_elements(tag, attributes) do
156
- write_odd_header(writer) if @header && @header != ''
157
- write_odd_footer(writer) if @footer && @footer != ''
158
- end
159
- elsif excel2003_style
160
- writer.empty_tag(tag, attributes)
161
- end
162
- end
163
-
164
- private
165
-
166
- #
167
- # Write the <oddHeader> element.
168
- #
169
- def write_odd_header(writer) # :nodoc:
170
- writer.data_element('oddHeader', @header)
171
- end
172
-
173
- #
174
- # Write the <oddFooter> element.
175
- #
176
- def write_odd_footer(writer) # :nodoc:
177
- writer.data_element('oddFooter', @footer)
178
- end
179
-
180
- def margin_attributes # :nodoc:
181
- [
182
- ['left', @margin_left],
183
- ['right', @margin_right],
184
- ['top', @margin_top],
185
- ['bottom', @margin_bottom],
186
- ['header', @margin_header],
187
- ['footer', @margin_footer]
188
- ]
189
- end
190
- end
191
- end
192
- end