write_xlsx 0.78.0 → 0.79.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|