write_xlsx 1.08.2 → 1.09.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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/Changes +9 -0
  3. data/README.md +1 -1
  4. data/examples/background.rb +19 -0
  5. data/lib/write_xlsx/chart/axis.rb +3 -3
  6. data/lib/write_xlsx/chart/scatter.rb +0 -15
  7. data/lib/write_xlsx/chart/series.rb +1 -1
  8. data/lib/write_xlsx/chart.rb +28 -28
  9. data/lib/write_xlsx/chartsheet.rb +3 -3
  10. data/lib/write_xlsx/drawing.rb +39 -39
  11. data/lib/write_xlsx/format.rb +11 -179
  12. data/lib/write_xlsx/package/app.rb +2 -2
  13. data/lib/write_xlsx/package/button.rb +8 -8
  14. data/lib/write_xlsx/package/comments.rb +8 -8
  15. data/lib/write_xlsx/package/content_types.rb +18 -9
  16. data/lib/write_xlsx/package/core.rb +5 -5
  17. data/lib/write_xlsx/package/custom.rb +2 -2
  18. data/lib/write_xlsx/package/metadata.rb +159 -0
  19. data/lib/write_xlsx/package/packager.rb +21 -0
  20. data/lib/write_xlsx/package/shared_strings.rb +6 -6
  21. data/lib/write_xlsx/package/styles.rb +11 -11
  22. data/lib/write_xlsx/package/table.rb +23 -23
  23. data/lib/write_xlsx/package/theme.rb +1 -1
  24. data/lib/write_xlsx/package/vml.rb +43 -43
  25. data/lib/write_xlsx/shape.rb +17 -15
  26. data/lib/write_xlsx/sparkline.rb +340 -340
  27. data/lib/write_xlsx/utility.rb +4 -23
  28. data/lib/write_xlsx/version.rb +1 -1
  29. data/lib/write_xlsx/workbook.rb +171 -644
  30. data/lib/write_xlsx/worksheet/cell_data.rb +25 -3
  31. data/lib/write_xlsx/worksheet/data_validation.rb +20 -20
  32. data/lib/write_xlsx/worksheet/hyperlink.rb +4 -4
  33. data/lib/write_xlsx/worksheet/page_setup.rb +12 -12
  34. data/lib/write_xlsx/worksheet.rb +295 -4184
  35. data/test/perl_output/background.xlsx +0 -0
  36. data/test/regression/images/logo.gif +0 -0
  37. data/test/regression/images/logo.jpg +0 -0
  38. data/test/regression/images/red.gif +0 -0
  39. data/test/regression/test_background01.rb +23 -0
  40. data/test/regression/test_background02.rb +23 -0
  41. data/test/regression/test_background03.rb +24 -0
  42. data/test/regression/test_background04.rb +25 -0
  43. data/test/regression/test_background05.rb +25 -0
  44. data/test/regression/test_background06.rb +31 -0
  45. data/test/regression/test_background07.rb +37 -0
  46. data/test/regression/test_chart_axis47.rb +52 -0
  47. data/test/regression/test_chart_axis48.rb +53 -0
  48. data/test/regression/test_dynamic_array01.rb +25 -0
  49. data/test/regression/test_image56.rb +23 -0
  50. data/test/regression/test_image57.rb +23 -0
  51. data/test/regression/test_set_column10.rb +55 -0
  52. data/test/regression/test_set_column11.rb +48 -0
  53. data/test/regression/test_set_row01.rb +35 -0
  54. data/test/regression/test_set_row02.rb +35 -0
  55. data/test/regression/test_set_row03.rb +35 -0
  56. data/test/regression/test_set_row04.rb +35 -0
  57. data/test/regression/xlsx_files/background01.xlsx +0 -0
  58. data/test/regression/xlsx_files/background02.xlsx +0 -0
  59. data/test/regression/xlsx_files/background03.xlsx +0 -0
  60. data/test/regression/xlsx_files/background04.xlsx +0 -0
  61. data/test/regression/xlsx_files/background05.xlsx +0 -0
  62. data/test/regression/xlsx_files/background06.xlsx +0 -0
  63. data/test/regression/xlsx_files/background07.xlsx +0 -0
  64. data/test/regression/xlsx_files/chart_axis47.xlsx +0 -0
  65. data/test/regression/xlsx_files/chart_axis48.xlsx +0 -0
  66. data/test/regression/xlsx_files/dynamic_array01.xlsx +0 -0
  67. data/test/regression/xlsx_files/image56.xlsx +0 -0
  68. data/test/regression/xlsx_files/image57.xlsx +0 -0
  69. data/test/regression/xlsx_files/set_row01.xlsx +0 -0
  70. data/test/regression/xlsx_files/set_row03.xlsx +0 -0
  71. data/test/test_example_match.rb +12 -0
  72. data/test/worksheet/test_pixels_to_row_col.rb +46 -0
  73. metadata +78 -2
@@ -37,8 +37,8 @@ module Writexlsx
37
37
  end
38
38
  unless comments_data.empty?
39
39
  write_shape_type_and_shape(
40
- comments_data,
41
- vml_shape_id, z_index) do
40
+ comments_data,
41
+ vml_shape_id, z_index) do
42
42
  write_comment_shapetype
43
43
  end
44
44
  end
@@ -84,9 +84,9 @@ module Writexlsx
84
84
  def xml_attributes
85
85
  schema = 'urn:schemas-microsoft-com:'
86
86
  [
87
- ['xmlns:v', "#{schema}vml"],
88
- ['xmlns:o', "#{schema}office:office"],
89
- ['xmlns:x', "#{schema}office:excel"]
87
+ ['xmlns:v', "#{schema}vml"],
88
+ ['xmlns:o', "#{schema}office:office"],
89
+ ['xmlns:x', "#{schema}office:excel"]
90
90
  ]
91
91
  end
92
92
 
@@ -95,8 +95,8 @@ module Writexlsx
95
95
  #
96
96
  def write_shapelayout(data_id)
97
97
  attributes = [
98
- ['v:ext', 'edit']
99
- ]
98
+ ['v:ext', 'edit']
99
+ ]
100
100
 
101
101
  @writer.tag_elements('o:shapelayout', attributes) do
102
102
  # Write the o:idmap element.
@@ -121,10 +121,10 @@ module Writexlsx
121
121
  #
122
122
  def write_comment_shapetype
123
123
  attributes = [
124
- ['id', '_x0000_t202'],
125
- ['coordsize', '21600,21600'],
126
- ['o:spt', 202],
127
- ['path', 'm,l,21600r21600,l21600,xe']
124
+ ['id', '_x0000_t202'],
125
+ ['coordsize', '21600,21600'],
126
+ ['o:spt', 202],
127
+ ['path', 'm,l,21600r21600,l21600,xe']
128
128
  ]
129
129
 
130
130
  @writer.tag_elements('v:shapetype', attributes) do
@@ -140,11 +140,11 @@ module Writexlsx
140
140
  #
141
141
  def write_button_shapetype
142
142
  attributes = [
143
- ['id', '_x0000_t201'],
144
- ['coordsize', '21600,21600'],
145
- ['o:spt', 201],
146
- ['path', 'm,l,21600r21600,l21600,xe']
147
- ]
143
+ ['id', '_x0000_t201'],
144
+ ['coordsize', '21600,21600'],
145
+ ['o:spt', 201],
146
+ ['path', 'm,l,21600r21600,l21600,xe']
147
+ ]
148
148
 
149
149
  @writer.tag_elements('v:shapetype', attributes) do
150
150
  # Write the v:stroke element.
@@ -169,14 +169,14 @@ module Writexlsx
169
169
  stroked = 'f'
170
170
 
171
171
  attributes = [
172
- ['id', id],
173
- ['coordsize', coordsize],
174
- ['o:spt', spt],
175
- ['o:preferrelative', o_preferrelative],
176
- ['path', path],
177
- ['filled', filled],
178
- ['stroked', stroked]
179
- ]
172
+ ['id', id],
173
+ ['coordsize', coordsize],
174
+ ['o:spt', spt],
175
+ ['o:preferrelative', o_preferrelative],
176
+ ['path', path],
177
+ ['filled', filled],
178
+ ['stroked', stroked]
179
+ ]
180
180
 
181
181
  @writer.tag_elements('v:shapetype', attributes) do
182
182
  # Write the v:stroke element.
@@ -198,12 +198,12 @@ module Writexlsx
198
198
  #
199
199
  def write_button_path
200
200
  attributes = [
201
- ['shadowok', 'f'],
202
- ['o:extrusionok', 'f'],
203
- ['strokeok', 'f'],
204
- ['fillok', 'f'],
205
- ['o:connecttype', 'rect']
206
- ]
201
+ ['shadowok', 'f'],
202
+ ['o:extrusionok', 'f'],
203
+ ['strokeok', 'f'],
204
+ ['fillok', 'f'],
205
+ ['o:connecttype', 'rect']
206
+ ]
207
207
  @writer.empty_tag('v:path', attributes)
208
208
  end
209
209
 
@@ -216,10 +216,10 @@ module Writexlsx
216
216
  connecttype = 'rect'
217
217
 
218
218
  attributes = [
219
- ['o:extrusionok', extrusionok],
220
- ['gradientshapeok', gradientshapeok],
221
- ['o:connecttype', connecttype]
222
- ]
219
+ ['o:extrusionok', extrusionok],
220
+ ['gradientshapeok', gradientshapeok],
221
+ ['o:connecttype', connecttype]
222
+ ]
223
223
 
224
224
  @writer.empty_tag('v:path', attributes)
225
225
  end
@@ -229,9 +229,9 @@ module Writexlsx
229
229
  #
230
230
  def write_shapetype_lock
231
231
  attributes = [
232
- ['v:ext', 'edit'],
233
- ['shapetype', 't']
234
- ]
232
+ ['v:ext', 'edit'],
233
+ ['shapetype', 't']
234
+ ]
235
235
  @writer.empty_tag('o:lock', attributes)
236
236
  end
237
237
 
@@ -240,9 +240,9 @@ module Writexlsx
240
240
  #
241
241
  def write_rotation_lock
242
242
  attributes = [
243
- ['v:ext', 'edit'],
244
- ['rotation', 't']
245
- ]
243
+ ['v:ext', 'edit'],
244
+ ['rotation', 't']
245
+ ]
246
246
  @writer.empty_tag('o:lock', attributes)
247
247
  end
248
248
 
@@ -254,9 +254,9 @@ module Writexlsx
254
254
  aspectratio = 't'
255
255
 
256
256
  attributes = [
257
- ['v:ext', ext],
258
- ['aspectratio', aspectratio]
259
- ]
257
+ ['v:ext', ext],
258
+ ['aspectratio', aspectratio]
259
+ ]
260
260
 
261
261
  @writer.empty_tag('o:lock', attributes)
262
262
  end
@@ -154,15 +154,17 @@ module Writexlsx
154
154
  # EMUs per point. Therefore, 12,700 * 3 /4 = 9,525 EMUs per pixel.
155
155
  #
156
156
  def calc_position_emus(worksheet)
157
- c_start, r_start, xx1, yy1, c_end, r_end, xx2, yy2, x_abslt, y_abslt =
158
- worksheet.position_object_pixels(
159
- @column_start,
160
- @row_start,
161
- @x_offset,
162
- @y_offset,
163
- @width * @scale_x,
164
- @height * @scale_y
165
- )
157
+ c_start, r_start,
158
+ xx1, yy1, c_end, r_end,
159
+ xx2, yy2, x_abslt, y_abslt =
160
+ worksheet.position_object_pixels(
161
+ @column_start,
162
+ @row_start,
163
+ @x_offset,
164
+ @y_offset,
165
+ @width * @scale_x,
166
+ @height * @scale_y
167
+ )
166
168
 
167
169
  # Now that x2/y2 have been calculated with a potentially negative
168
170
  # width/height we use the absolute value and convert to EMUs.
@@ -297,12 +299,12 @@ module Writexlsx
297
299
 
298
300
  def dimensions
299
301
  [
300
- @column_start, @row_start,
301
- @x1, @y1,
302
- @column_end, @row_end,
303
- @x2, @y2,
304
- @x_abs, @y_abs,
305
- @width_emu, @height_emu
302
+ @column_start, @row_start,
303
+ @x1, @y1,
304
+ @column_end, @row_end,
305
+ @x2, @y2,
306
+ @x_abs, @y_abs,
307
+ @width_emu, @height_emu
306
308
  ]
307
309
  end
308
310
  end