write_xlsx 1.12.2 → 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 (40) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -0
  3. data/Changes +6 -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 +2 -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. data/lib/write_xlsx/zip_file_utils.rb +1 -1
  38. data/write_xlsx.gemspec +1 -1
  39. metadata +34 -5
  40. data/lib/write_xlsx/worksheet/page_setup.rb +0 -192
@@ -16,7 +16,7 @@ module ZipFileUtils
16
16
  src = File.expand_path(src)
17
17
  dest = File.expand_path(dest)
18
18
  FileUtils.rm_f(dest)
19
- Zip::File.open(dest, Zip::File::CREATE) do |zf|
19
+ Zip::File.open(dest, create: true) do |zf|
20
20
  if File.file?(src)
21
21
  zf.add(encode_path(File.basename(src), options[:fs_encoding]), src)
22
22
  break
data/write_xlsx.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |gem|
21
21
  gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
22
22
  gem.require_paths = ['lib']
23
23
  gem.add_dependency 'nkf'
24
- gem.add_dependency 'rubyzip', '~> 2.4.0'
24
+ gem.add_dependency 'rubyzip', '>= 2.4.0', '< 4.0'
25
25
  gem.add_development_dependency 'byebug'
26
26
  gem.add_development_dependency 'minitest'
27
27
  gem.add_development_dependency 'mutex_m'
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.2
4
+ version: 1.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hideo NAKAMURA
@@ -27,16 +27,22 @@ dependencies:
27
27
  name: rubyzip
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - "~>"
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 2.4.0
33
+ - - "<"
34
+ - !ruby/object:Gem::Version
35
+ version: '4.0'
33
36
  type: :runtime
34
37
  prerelease: false
35
38
  version_requirements: !ruby/object:Gem::Requirement
36
39
  requirements:
37
- - - "~>"
40
+ - - ">="
38
41
  - !ruby/object:Gem::Version
39
42
  version: 2.4.0
43
+ - - "<"
44
+ - !ruby/object:Gem::Version
45
+ version: '4.0'
40
46
  - !ruby/object:Gem::Dependency
41
47
  name: byebug
42
48
  requirement: !ruby/object:Gem::Requirement
@@ -258,6 +264,7 @@ files:
258
264
  - lib/write_xlsx/image.rb
259
265
  - lib/write_xlsx/image_property.rb
260
266
  - lib/write_xlsx/inserted_chart.rb
267
+ - lib/write_xlsx/object_positioning.rb
261
268
  - lib/write_xlsx/package/app.rb
262
269
  - lib/write_xlsx/package/button.rb
263
270
  - lib/write_xlsx/package/comments.rb
@@ -278,6 +285,7 @@ files:
278
285
  - lib/write_xlsx/package/theme.rb
279
286
  - lib/write_xlsx/package/vml.rb
280
287
  - lib/write_xlsx/package/xml_writer_simple.rb
288
+ - lib/write_xlsx/page_setup.rb
281
289
  - lib/write_xlsx/shape.rb
282
290
  - lib/write_xlsx/sheets.rb
283
291
  - lib/write_xlsx/sparkline.rb
@@ -285,10 +293,31 @@ files:
285
293
  - lib/write_xlsx/version.rb
286
294
  - lib/write_xlsx/workbook.rb
287
295
  - lib/write_xlsx/worksheet.rb
296
+ - lib/write_xlsx/worksheet/asset_manager.rb
297
+ - lib/write_xlsx/worksheet/autofilter.rb
288
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
289
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
290
311
  - lib/write_xlsx/worksheet/hyperlink.rb
291
- - 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
292
321
  - lib/write_xlsx/zip_file_utils.rb
293
322
  - write_xlsx.gemspec
294
323
  homepage: https://github.com/cxn03651/write_xlsx#readme
@@ -309,7 +338,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
309
338
  - !ruby/object:Gem::Version
310
339
  version: '0'
311
340
  requirements: []
312
- rubygems_version: 3.6.9
341
+ rubygems_version: 4.0.3
313
342
  specification_version: 4
314
343
  summary: write_xlsx is a gem to create a new file in the Excel 2007+ XLSX format.
315
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