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.
- checksums.yaml +4 -4
- data/Changes +9 -0
- data/README.md +1 -1
- data/examples/background.rb +19 -0
- data/lib/write_xlsx/chart/axis.rb +3 -3
- data/lib/write_xlsx/chart/scatter.rb +0 -15
- data/lib/write_xlsx/chart/series.rb +1 -1
- data/lib/write_xlsx/chart.rb +28 -28
- data/lib/write_xlsx/chartsheet.rb +3 -3
- data/lib/write_xlsx/drawing.rb +39 -39
- data/lib/write_xlsx/format.rb +11 -179
- data/lib/write_xlsx/package/app.rb +2 -2
- data/lib/write_xlsx/package/button.rb +8 -8
- data/lib/write_xlsx/package/comments.rb +8 -8
- data/lib/write_xlsx/package/content_types.rb +18 -9
- data/lib/write_xlsx/package/core.rb +5 -5
- data/lib/write_xlsx/package/custom.rb +2 -2
- data/lib/write_xlsx/package/metadata.rb +159 -0
- data/lib/write_xlsx/package/packager.rb +21 -0
- data/lib/write_xlsx/package/shared_strings.rb +6 -6
- data/lib/write_xlsx/package/styles.rb +11 -11
- data/lib/write_xlsx/package/table.rb +23 -23
- data/lib/write_xlsx/package/theme.rb +1 -1
- data/lib/write_xlsx/package/vml.rb +43 -43
- data/lib/write_xlsx/shape.rb +17 -15
- data/lib/write_xlsx/sparkline.rb +340 -340
- data/lib/write_xlsx/utility.rb +4 -23
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +171 -644
- data/lib/write_xlsx/worksheet/cell_data.rb +25 -3
- data/lib/write_xlsx/worksheet/data_validation.rb +20 -20
- data/lib/write_xlsx/worksheet/hyperlink.rb +4 -4
- data/lib/write_xlsx/worksheet/page_setup.rb +12 -12
- data/lib/write_xlsx/worksheet.rb +295 -4184
- data/test/perl_output/background.xlsx +0 -0
- data/test/regression/images/logo.gif +0 -0
- data/test/regression/images/logo.jpg +0 -0
- data/test/regression/images/red.gif +0 -0
- data/test/regression/test_background01.rb +23 -0
- data/test/regression/test_background02.rb +23 -0
- data/test/regression/test_background03.rb +24 -0
- data/test/regression/test_background04.rb +25 -0
- data/test/regression/test_background05.rb +25 -0
- data/test/regression/test_background06.rb +31 -0
- data/test/regression/test_background07.rb +37 -0
- data/test/regression/test_chart_axis47.rb +52 -0
- data/test/regression/test_chart_axis48.rb +53 -0
- data/test/regression/test_dynamic_array01.rb +25 -0
- data/test/regression/test_image56.rb +23 -0
- data/test/regression/test_image57.rb +23 -0
- data/test/regression/test_set_column10.rb +55 -0
- data/test/regression/test_set_column11.rb +48 -0
- data/test/regression/test_set_row01.rb +35 -0
- data/test/regression/test_set_row02.rb +35 -0
- data/test/regression/test_set_row03.rb +35 -0
- data/test/regression/test_set_row04.rb +35 -0
- data/test/regression/xlsx_files/background01.xlsx +0 -0
- data/test/regression/xlsx_files/background02.xlsx +0 -0
- data/test/regression/xlsx_files/background03.xlsx +0 -0
- data/test/regression/xlsx_files/background04.xlsx +0 -0
- data/test/regression/xlsx_files/background05.xlsx +0 -0
- data/test/regression/xlsx_files/background06.xlsx +0 -0
- data/test/regression/xlsx_files/background07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis47.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis48.xlsx +0 -0
- data/test/regression/xlsx_files/dynamic_array01.xlsx +0 -0
- data/test/regression/xlsx_files/image56.xlsx +0 -0
- data/test/regression/xlsx_files/image57.xlsx +0 -0
- data/test/regression/xlsx_files/set_row01.xlsx +0 -0
- data/test/regression/xlsx_files/set_row03.xlsx +0 -0
- data/test/test_example_match.rb +12 -0
- data/test/worksheet/test_pixels_to_row_col.rb +46 -0
- 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
|
-
|
41
|
-
|
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
|
-
|
88
|
-
|
89
|
-
|
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
|
-
|
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
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
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
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
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
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
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
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
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
|
-
|
220
|
-
|
221
|
-
|
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
|
-
|
233
|
-
|
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
|
-
|
244
|
-
|
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
|
-
|
258
|
-
|
259
|
-
|
257
|
+
['v:ext', ext],
|
258
|
+
['aspectratio', aspectratio]
|
259
|
+
]
|
260
260
|
|
261
261
|
@writer.empty_tag('o:lock', attributes)
|
262
262
|
end
|
data/lib/write_xlsx/shape.rb
CHANGED
@@ -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,
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
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
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
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
|