write_xlsx 0.78.0 → 0.79.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 +7 -0
- data/README.md +1 -1
- data/examples/chart_pie.rb +1 -1
- data/lib/write_xlsx/drawing.rb +1 -1
- data/lib/write_xlsx/package/vml.rb +194 -7
- data/lib/write_xlsx/sheets.rb +38 -5
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +150 -55
- data/lib/write_xlsx/worksheet/page_setup.rb +5 -2
- data/lib/write_xlsx/worksheet.rb +136 -11
- data/test/helper.rb +1 -1
- data/test/perl_output/demo.xlsx +0 -0
- data/test/regression/images/black_150.jpg +0 -0
- data/test/regression/images/black_150.png +0 -0
- data/test/regression/images/black_150e.png +0 -0
- data/test/regression/images/black_300.jpg +0 -0
- data/test/regression/images/black_300.png +0 -0
- data/test/regression/images/black_300e.png +0 -0
- data/test/regression/images/black_72.jpg +0 -0
- data/test/regression/images/black_72.png +0 -0
- data/test/regression/images/black_72e.png +0 -0
- data/test/regression/images/black_96.jpg +0 -0
- data/test/regression/images/black_96.png +0 -0
- data/test/regression/test_chart_scatter15.rb +44 -0
- data/test/regression/test_header01.rb +28 -0
- data/test/regression/test_header02.rb +28 -0
- data/test/regression/test_header03.rb +31 -0
- data/test/regression/test_header_image01.rb +26 -0
- data/test/regression/test_header_image02.rb +33 -0
- data/test/regression/test_header_image03.rb +34 -0
- data/test/regression/test_header_image04.rb +34 -0
- data/test/regression/test_header_image05.rb +28 -0
- data/test/regression/test_header_image06.rb +32 -0
- data/test/regression/test_header_image07.rb +29 -0
- data/test/regression/test_header_image08.rb +33 -0
- data/test/regression/test_header_image09.rb +36 -0
- data/test/regression/test_header_image10.rb +36 -0
- data/test/regression/test_header_image11.rb +28 -0
- data/test/regression/test_header_image12.rb +28 -0
- data/test/regression/test_header_image13.rb +36 -0
- data/test/regression/test_header_image14.rb +36 -0
- data/test/regression/test_image22.rb +24 -0
- data/test/regression/test_image23.rb +30 -0
- data/test/regression/test_image24.rb +24 -0
- data/test/regression/test_image25.rb +24 -0
- data/test/regression/test_image26.rb +30 -0
- data/test/regression/test_image27.rb +24 -0
- data/test/regression/xlsx_files/chart_scatter15.xlsx +0 -0
- data/test/regression/xlsx_files/header01.xlsx +0 -0
- data/test/regression/xlsx_files/header02.xlsx +0 -0
- data/test/regression/xlsx_files/header03.xlsx +0 -0
- data/test/regression/xlsx_files/header_image01.xlsx +0 -0
- data/test/regression/xlsx_files/header_image02.xlsx +0 -0
- data/test/regression/xlsx_files/header_image03.xlsx +0 -0
- data/test/regression/xlsx_files/header_image04.xlsx +0 -0
- data/test/regression/xlsx_files/header_image05.xlsx +0 -0
- data/test/regression/xlsx_files/header_image06.xlsx +0 -0
- data/test/regression/xlsx_files/header_image07.xlsx +0 -0
- data/test/regression/xlsx_files/header_image08.xlsx +0 -0
- data/test/regression/xlsx_files/header_image09.xlsx +0 -0
- data/test/regression/xlsx_files/header_image10.xlsx +0 -0
- data/test/regression/xlsx_files/header_image11.xlsx +0 -0
- data/test/regression/xlsx_files/header_image12.xlsx +0 -0
- data/test/regression/xlsx_files/header_image13.xlsx +0 -0
- data/test/regression/xlsx_files/header_image14.xlsx +0 -0
- data/test/regression/xlsx_files/image22.xlsx +0 -0
- data/test/regression/xlsx_files/image23.xlsx +0 -0
- data/test/regression/xlsx_files/image24.xlsx +0 -0
- data/test/regression/xlsx_files/image25.xlsx +0 -0
- data/test/regression/xlsx_files/image26.xlsx +0 -0
- data/test/regression/xlsx_files/image27.xlsx +0 -0
- metadata +119 -1
data/lib/write_xlsx/worksheet.rb
CHANGED
@@ -285,7 +285,10 @@ module Writexlsx
|
|
285
285
|
|
286
286
|
attr_reader :index # :nodoc:
|
287
287
|
attr_reader :charts, :images, :tables, :shapes, :drawing # :nodoc:
|
288
|
+
attr_reader :header_images, :footer_images # :nodoc:
|
289
|
+
attr_reader :vml_drawing_links # :nodoc:
|
288
290
|
attr_reader :vml_data_id # :nodoc:
|
291
|
+
attr_reader :vml_header_id # :nodoc:
|
289
292
|
attr_reader :autofilter_area # :nodoc:
|
290
293
|
attr_reader :writer, :set_rows, :col_formats # :nodoc:
|
291
294
|
attr_reader :vml_shape_id # :nodoc:
|
@@ -342,12 +345,15 @@ module Writexlsx
|
|
342
345
|
@external_vml_links = []
|
343
346
|
@external_table_links = []
|
344
347
|
@drawing_links = []
|
348
|
+
@vml_drawing_links = []
|
345
349
|
@charts = []
|
346
350
|
@images = []
|
347
351
|
@tables = []
|
348
352
|
@sparklines = []
|
349
353
|
@shapes = []
|
350
354
|
@shape_hash = {}
|
355
|
+
@header_images = []
|
356
|
+
@footer_images = []
|
351
357
|
|
352
358
|
@outline_row_level = 0
|
353
359
|
@outline_col_level = 0
|
@@ -360,9 +366,11 @@ module Writexlsx
|
|
360
366
|
|
361
367
|
@merge = []
|
362
368
|
|
363
|
-
@has_vml
|
369
|
+
@has_vml = false
|
370
|
+
@has_header_vml = false
|
364
371
|
@comments = Package::Comments.new(self)
|
365
372
|
@buttons_array = []
|
373
|
+
@header_images_array = []
|
366
374
|
|
367
375
|
@validations = []
|
368
376
|
|
@@ -377,7 +385,7 @@ module Writexlsx
|
|
377
385
|
self::margins_top_bottom = 1
|
378
386
|
@page_setup.margin_header = 0.5
|
379
387
|
@page_setup.margin_footer = 0.5
|
380
|
-
@page_setup.header_footer_aligns =
|
388
|
+
@page_setup.header_footer_aligns = false
|
381
389
|
end
|
382
390
|
end
|
383
391
|
|
@@ -410,6 +418,7 @@ module Writexlsx
|
|
410
418
|
write_col_breaks
|
411
419
|
write_drawings
|
412
420
|
write_legacy_drawing
|
421
|
+
write_legacy_drawing_hf
|
413
422
|
write_table_parts
|
414
423
|
write_ext_sparklines
|
415
424
|
end
|
@@ -1186,11 +1195,46 @@ module Writexlsx
|
|
1186
1195
|
# See, also the headers.rb program in the examples directory of the
|
1187
1196
|
# distribution.
|
1188
1197
|
#
|
1189
|
-
def set_header(string = '', margin = 0.3)
|
1198
|
+
def set_header(string = '', margin = 0.3, options = {})
|
1190
1199
|
raise 'Header string must be less than 255 characters' if string.length >= 255
|
1200
|
+
# Replace the Excel placeholder &[Picture] with the internal &G.
|
1201
|
+
@page_setup.header = string.gsub(/&\[Picture\]/, '&G')
|
1191
1202
|
|
1192
|
-
|
1193
|
-
|
1203
|
+
if string.size >= 255
|
1204
|
+
raise 'Header string must be less than 255 characters'
|
1205
|
+
end
|
1206
|
+
|
1207
|
+
if options[:align_with_margins]
|
1208
|
+
@page_setup.header_footer_aligns = options[:align_with_margins]
|
1209
|
+
end
|
1210
|
+
|
1211
|
+
if options[:scale_with_doc]
|
1212
|
+
@page_setup.header_footer_scales = options[:scale_with_doc]
|
1213
|
+
end
|
1214
|
+
|
1215
|
+
# Reset the array in case the function is called more than once.
|
1216
|
+
@header_images = []
|
1217
|
+
|
1218
|
+
[
|
1219
|
+
[:image_left, 'LH'], [:image_center, 'CH'], [:image_right, 'RH']
|
1220
|
+
].each do |p|
|
1221
|
+
if options[p.first]
|
1222
|
+
@header_images << [options[p.first], p.last]
|
1223
|
+
end
|
1224
|
+
end
|
1225
|
+
|
1226
|
+
# placeholeder /&G/ の数
|
1227
|
+
placeholder_count = @page_setup.header.scan(/&G/).count
|
1228
|
+
|
1229
|
+
image_count = @header_images.count
|
1230
|
+
|
1231
|
+
if image_count != placeholder_count
|
1232
|
+
raise "Number of header image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.header}"
|
1233
|
+
end
|
1234
|
+
|
1235
|
+
@has_header_vml = true if image_count > 0
|
1236
|
+
|
1237
|
+
@page_setup.margin_header = margin || 0.3
|
1194
1238
|
@page_setup.header_footer_changed = true
|
1195
1239
|
end
|
1196
1240
|
|
@@ -1199,10 +1243,48 @@ module Writexlsx
|
|
1199
1243
|
#
|
1200
1244
|
# The syntax of the set_footer() method is the same as set_header()
|
1201
1245
|
#
|
1202
|
-
def set_footer(string = '', margin = 0.3)
|
1246
|
+
def set_footer(string = '', margin = 0.3, options = {})
|
1203
1247
|
raise 'Footer string must be less than 255 characters' if string.length >= 255
|
1204
1248
|
|
1205
|
-
@page_setup.footer = string
|
1249
|
+
@page_setup.footer = string.dup
|
1250
|
+
|
1251
|
+
# Replace the Excel placeholder &[Picture] with the internal &G.
|
1252
|
+
@page_setup.footer = string.gsub(/&\[Picture\]/, '&G')
|
1253
|
+
|
1254
|
+
if string.size >= 255
|
1255
|
+
raise 'Header string must be less than 255 characters'
|
1256
|
+
end
|
1257
|
+
|
1258
|
+
if options[:align_with_margins]
|
1259
|
+
@page_setup.header_footer_aligns = options[:align_with_margins]
|
1260
|
+
end
|
1261
|
+
|
1262
|
+
if options[:scale_with_doc]
|
1263
|
+
@page_setup.header_footer_scales = options[:scale_with_doc]
|
1264
|
+
end
|
1265
|
+
|
1266
|
+
# Reset the array in case the function is called more than once.
|
1267
|
+
@footer_images = []
|
1268
|
+
|
1269
|
+
[
|
1270
|
+
[:image_left, 'LF'], [:image_center, 'CF'], [:image_right, 'RF']
|
1271
|
+
].each do |p|
|
1272
|
+
if options[p.first]
|
1273
|
+
@footer_images << [options[p.first], p.last]
|
1274
|
+
end
|
1275
|
+
end
|
1276
|
+
|
1277
|
+
# placeholeder /&G/ の数
|
1278
|
+
placeholder_count = @page_setup.footer.scan(/&G/).count
|
1279
|
+
|
1280
|
+
image_count = @footer_images.count
|
1281
|
+
|
1282
|
+
if image_count != placeholder_count
|
1283
|
+
raise "Number of footer image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.footer}"
|
1284
|
+
end
|
1285
|
+
|
1286
|
+
@has_header_vml = true if image_count > 0
|
1287
|
+
|
1206
1288
|
@page_setup.margin_footer = margin
|
1207
1289
|
@page_setup.header_footer_changed = true
|
1208
1290
|
end
|
@@ -5473,6 +5555,10 @@ module Writexlsx
|
|
5473
5555
|
@has_vml
|
5474
5556
|
end
|
5475
5557
|
|
5558
|
+
def has_header_vml? # :nodoc:
|
5559
|
+
@has_header_vml
|
5560
|
+
end
|
5561
|
+
|
5476
5562
|
def has_comments? # :nodoc:
|
5477
5563
|
!@comments.empty?
|
5478
5564
|
end
|
@@ -5575,7 +5661,7 @@ module Writexlsx
|
|
5575
5661
|
# | 1 |(A1)._______|______ |
|
5576
5662
|
# | | | | |
|
5577
5663
|
# | | | | |
|
5578
|
-
# +-----+----|
|
5664
|
+
# +-----+----| Object |-----+
|
5579
5665
|
# | | | | |
|
5580
5666
|
# | 2 | |______________. |
|
5581
5667
|
# | | | (B2)|
|
@@ -5717,6 +5803,10 @@ module Writexlsx
|
|
5717
5803
|
@buttons_array
|
5718
5804
|
end
|
5719
5805
|
|
5806
|
+
def header_images_data # :nodoc:
|
5807
|
+
@header_images_array
|
5808
|
+
end
|
5809
|
+
|
5720
5810
|
def external_links
|
5721
5811
|
[
|
5722
5812
|
@external_hyper_links,
|
@@ -5748,6 +5838,14 @@ module Writexlsx
|
|
5748
5838
|
@vml_shape_id = vml_shape_id
|
5749
5839
|
end
|
5750
5840
|
|
5841
|
+
#
|
5842
|
+
# Setup external linkage for VML header/footer images.
|
5843
|
+
#
|
5844
|
+
def prepare_header_vml_objects(vml_header_id, vml_drawing_id)
|
5845
|
+
@vml_header_id = vml_header_id
|
5846
|
+
@external_vml_links << ['/vmlDrawing', "../drawings/vmlDrawing#{vml_drawing_id}.vml"]
|
5847
|
+
end
|
5848
|
+
|
5751
5849
|
#
|
5752
5850
|
# Set the table ids for the worksheet tables.
|
5753
5851
|
#
|
@@ -6073,7 +6171,7 @@ module Writexlsx
|
|
6073
6171
|
# The vertices are expressed as English Metric Units (EMUs). There are 12,700
|
6074
6172
|
# EMUs per point. Therefore, 12,700 * 3 /4 = 9,525 EMUs per pixel.
|
6075
6173
|
#
|
6076
|
-
def position_object_emus(col_start, row_start, x1, y1, width, height) #:nodoc:
|
6174
|
+
def position_object_emus(col_start, row_start, x1, y1, width, height, x_dpi = 96, y_dpi = 96) #:nodoc:
|
6077
6175
|
col_start, row_start, x1, y1, col_end, row_end, x2, y2, x_abs, y_abs =
|
6078
6176
|
position_object_pixels(col_start, row_start, x1, y1, width, height)
|
6079
6177
|
|
@@ -6136,7 +6234,9 @@ module Writexlsx
|
|
6136
6234
|
#
|
6137
6235
|
# Set up image/drawings.
|
6138
6236
|
#
|
6139
|
-
def prepare_image(index, image_id, drawing_id, width, height, name, image_type) #:nodoc:
|
6237
|
+
def prepare_image(index, image_id, drawing_id, width, height, name, image_type, x_dpi = 96, y_dpi = 96) #:nodoc:
|
6238
|
+
x_dpi ||= 96
|
6239
|
+
y_dpi ||= 96
|
6140
6240
|
drawing_type = 2
|
6141
6241
|
drawing
|
6142
6242
|
|
@@ -6145,6 +6245,9 @@ module Writexlsx
|
|
6145
6245
|
width *= x_scale
|
6146
6246
|
height *= y_scale
|
6147
6247
|
|
6248
|
+
width *= 96.0 / x_dpi
|
6249
|
+
height *= 96.0 / y_dpi
|
6250
|
+
|
6148
6251
|
dimensions = position_object_emus(col, row, x_offset, y_offset, width, height)
|
6149
6252
|
|
6150
6253
|
# Convert from pixels to emus.
|
@@ -6162,13 +6265,22 @@ module Writexlsx
|
|
6162
6265
|
else
|
6163
6266
|
drawing = @drawing
|
6164
6267
|
end
|
6165
|
-
|
6166
6268
|
drawing.add_drawing_object(drawing_type, dimensions, width, height, name)
|
6167
6269
|
|
6168
6270
|
@drawing_links << ['/image', "../media/image#{image_id}.#{image_type}"]
|
6169
6271
|
end
|
6170
6272
|
public :prepare_image
|
6171
6273
|
|
6274
|
+
def prepare_header_image(image_id, width, height, name, image_type, position, x_dpi, y_dpi)
|
6275
|
+
# Strip the extension from the filename.
|
6276
|
+
body = name.dup
|
6277
|
+
body[/\.[^\.]+$/, 0] = ''
|
6278
|
+
|
6279
|
+
@header_images_array << [width, height, body, position, x_dpi, y_dpi]
|
6280
|
+
@vml_drawing_links << ['/image', "../media/image#{image_id}.#{image_type}" ]
|
6281
|
+
end
|
6282
|
+
public :prepare_header_image
|
6283
|
+
|
6172
6284
|
#
|
6173
6285
|
# :call-seq:
|
6174
6286
|
# insert_shape(row, col, shape [ , x, y, x_scale, y_scale ] )
|
@@ -7180,6 +7292,19 @@ module Writexlsx
|
|
7180
7292
|
increment_rel_id_and_write_r_id('legacyDrawing') if has_vml?
|
7181
7293
|
end
|
7182
7294
|
|
7295
|
+
#
|
7296
|
+
# Write the <legacyDrawingHF> element.
|
7297
|
+
#
|
7298
|
+
def write_legacy_drawing_hf # :nodoc:
|
7299
|
+
return unless has_header_vml?
|
7300
|
+
|
7301
|
+
# Increment the relationship id for any drawings or comments.
|
7302
|
+
@rel_count += 1
|
7303
|
+
|
7304
|
+
attributes = [ ['r:id', "rId#{@rel_count}"] ]
|
7305
|
+
@writer.empty_tag('legacyDrawingHF', attributes)
|
7306
|
+
end
|
7307
|
+
|
7183
7308
|
#
|
7184
7309
|
# Write the underline font element.
|
7185
7310
|
#
|
data/test/helper.rb
CHANGED
@@ -132,7 +132,7 @@ class Test::Unit::TestCase
|
|
132
132
|
exp_xml_str = exp_xml_str.
|
133
133
|
sub(/horizontalDpi="200" /, '').
|
134
134
|
sub(/verticalDpi="200" /, '').
|
135
|
-
sub(/(<pageSetup
|
135
|
+
sub(/(<pageSetup[^>]* )r:id="rId1"/, '\1').
|
136
136
|
sub(/ +\/>/, ' />')
|
137
137
|
end
|
138
138
|
|
data/test/perl_output/demo.xlsx
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionChartScatter15 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_chart_scatter15
|
14
|
+
@xlsx = 'chart_scatter15.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
chart = workbook.add_chart(:type => 'scatter', :embedded => 1)
|
18
|
+
|
19
|
+
# For testing, copy the randomly generated axis ids in the target xlsx file.
|
20
|
+
chart.instance_variable_set(:@axis_ids, [58843520, 58845440])
|
21
|
+
|
22
|
+
data = [
|
23
|
+
[ 'X', 1, 3 ],
|
24
|
+
[ 'Y', 10, 30 ]
|
25
|
+
]
|
26
|
+
|
27
|
+
worksheet.write('A1', data)
|
28
|
+
|
29
|
+
chart.add_series(
|
30
|
+
:categories => '=Sheet1!$A$2:$A$3',
|
31
|
+
:values => '=Sheet1!$B$2:$B$3'
|
32
|
+
)
|
33
|
+
|
34
|
+
chart.set_x_axis(:name => '=Sheet1!$A$1',
|
35
|
+
:name_font => {:italic => 1, :baseline => -1})
|
36
|
+
chart.set_y_axis(:name => '=Sheet1!$B$1')
|
37
|
+
|
38
|
+
worksheet.insert_chart('E9', chart)
|
39
|
+
|
40
|
+
workbook.close
|
41
|
+
|
42
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx)
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionHeader01 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_header01
|
14
|
+
@xlsx = 'header01.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
|
18
|
+
worksheet.set_header('&L&P', nil, { :scale_with_doc => 0 } )
|
19
|
+
|
20
|
+
workbook.close
|
21
|
+
|
22
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
|
23
|
+
[],
|
24
|
+
{
|
25
|
+
'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]
|
26
|
+
})
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionHeader02 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_header02
|
14
|
+
@xlsx = 'header02.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
|
18
|
+
worksheet.set_header('&L&P', nil, { :align_with_margins => 0 } )
|
19
|
+
|
20
|
+
workbook.close
|
21
|
+
|
22
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
|
23
|
+
[],
|
24
|
+
{
|
25
|
+
'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]
|
26
|
+
})
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionHeader03 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_header03
|
14
|
+
@xlsx = 'header03.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
|
18
|
+
worksheet.set_footer('&L&P', nil,
|
19
|
+
{ :scale_with_doc => 0,
|
20
|
+
:align_with_margins => 0 }
|
21
|
+
)
|
22
|
+
|
23
|
+
workbook.close
|
24
|
+
|
25
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
|
26
|
+
[],
|
27
|
+
{
|
28
|
+
'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]
|
29
|
+
})
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionHeaderImage01 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_header_image01
|
14
|
+
@xlsx = 'header_image01.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
|
18
|
+
worksheet.set_header('&L&G', nil, {:image_left => 'test/regression/images/red.jpg'})
|
19
|
+
|
20
|
+
workbook.close
|
21
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
|
22
|
+
[],
|
23
|
+
{'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]}
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionHeaderImage02 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_header_image02
|
14
|
+
@xlsx = 'header_image02.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
|
18
|
+
worksheet.set_header(
|
19
|
+
'&L&G&C&G',
|
20
|
+
nil,
|
21
|
+
{
|
22
|
+
:image_left => 'test/regression/images/red.jpg',
|
23
|
+
:image_center => 'test/regression/images/blue.jpg'
|
24
|
+
}
|
25
|
+
)
|
26
|
+
|
27
|
+
workbook.close
|
28
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
|
29
|
+
[],
|
30
|
+
{'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]}
|
31
|
+
)
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionHeaderImage03 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_header_image03
|
14
|
+
@xlsx = 'header_image03.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
|
18
|
+
worksheet.set_header(
|
19
|
+
'&L&[Picture]&C&G&R&[Picture]',
|
20
|
+
nil,
|
21
|
+
{
|
22
|
+
:image_left => 'test/regression/images/red.jpg',
|
23
|
+
:image_center => 'test/regression/images/blue.jpg',
|
24
|
+
:image_right => 'test/regression/images/yellow.jpg'
|
25
|
+
}
|
26
|
+
)
|
27
|
+
|
28
|
+
workbook.close
|
29
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
|
30
|
+
[],
|
31
|
+
{'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]}
|
32
|
+
)
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionHeaderImage04 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_header_image04
|
14
|
+
@xlsx = 'header_image04.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
|
18
|
+
worksheet.set_footer(
|
19
|
+
'&L&G&C&G&R&G',
|
20
|
+
nil,
|
21
|
+
{
|
22
|
+
:image_left => 'test/regression/images/red.jpg',
|
23
|
+
:image_center => 'test/regression/images/blue.jpg',
|
24
|
+
:image_right => 'test/regression/images/yellow.jpg'
|
25
|
+
}
|
26
|
+
)
|
27
|
+
|
28
|
+
workbook.close
|
29
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
|
30
|
+
[],
|
31
|
+
{'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]}
|
32
|
+
)
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionHeaderImage05 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_header_image05
|
14
|
+
@xlsx = 'header_image05.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
|
18
|
+
worksheet.set_header('&L&G', nil, { :image_left => 'test/regression/images/red.jpg' })
|
19
|
+
worksheet.set_footer('&L&G', nil, { :image_left => 'test/regression/images/blue.jpg' })
|
20
|
+
|
21
|
+
|
22
|
+
workbook.close
|
23
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
|
24
|
+
[],
|
25
|
+
{'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]}
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionHeaderImage06 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_header_image06
|
14
|
+
@xlsx = 'header_image06.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet1 = workbook.add_worksheet
|
17
|
+
worksheet2 = workbook.add_worksheet
|
18
|
+
|
19
|
+
worksheet1.set_header('&L&G', nil, { :image_left => 'test/regression/images/red.jpg' })
|
20
|
+
worksheet2.set_header('&L&G', nil, { :image_left => 'test/regression/images/blue.jpg' })
|
21
|
+
|
22
|
+
|
23
|
+
workbook.close
|
24
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
|
25
|
+
[],
|
26
|
+
{
|
27
|
+
'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ],
|
28
|
+
'xl/worksheets/sheet2.xml' => [ '<pageMargins', '<pageSetup' ],
|
29
|
+
}
|
30
|
+
)
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionHeaderImage07 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_header_image07
|
14
|
+
@xlsx = 'header_image07.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
|
18
|
+
worksheet.insert_image('B3', 'test/regression/images/red.jpg' )
|
19
|
+
|
20
|
+
worksheet.set_header('&L&G', nil, { :image_left => 'test/regression/images/blue.jpg' })
|
21
|
+
|
22
|
+
|
23
|
+
workbook.close
|
24
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx,
|
25
|
+
[],
|
26
|
+
{'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]}
|
27
|
+
)
|
28
|
+
end
|
29
|
+
end
|