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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/Changes +7 -0
  3. data/README.md +1 -1
  4. data/examples/chart_pie.rb +1 -1
  5. data/lib/write_xlsx/drawing.rb +1 -1
  6. data/lib/write_xlsx/package/vml.rb +194 -7
  7. data/lib/write_xlsx/sheets.rb +38 -5
  8. data/lib/write_xlsx/version.rb +1 -1
  9. data/lib/write_xlsx/workbook.rb +150 -55
  10. data/lib/write_xlsx/worksheet/page_setup.rb +5 -2
  11. data/lib/write_xlsx/worksheet.rb +136 -11
  12. data/test/helper.rb +1 -1
  13. data/test/perl_output/demo.xlsx +0 -0
  14. data/test/regression/images/black_150.jpg +0 -0
  15. data/test/regression/images/black_150.png +0 -0
  16. data/test/regression/images/black_150e.png +0 -0
  17. data/test/regression/images/black_300.jpg +0 -0
  18. data/test/regression/images/black_300.png +0 -0
  19. data/test/regression/images/black_300e.png +0 -0
  20. data/test/regression/images/black_72.jpg +0 -0
  21. data/test/regression/images/black_72.png +0 -0
  22. data/test/regression/images/black_72e.png +0 -0
  23. data/test/regression/images/black_96.jpg +0 -0
  24. data/test/regression/images/black_96.png +0 -0
  25. data/test/regression/test_chart_scatter15.rb +44 -0
  26. data/test/regression/test_header01.rb +28 -0
  27. data/test/regression/test_header02.rb +28 -0
  28. data/test/regression/test_header03.rb +31 -0
  29. data/test/regression/test_header_image01.rb +26 -0
  30. data/test/regression/test_header_image02.rb +33 -0
  31. data/test/regression/test_header_image03.rb +34 -0
  32. data/test/regression/test_header_image04.rb +34 -0
  33. data/test/regression/test_header_image05.rb +28 -0
  34. data/test/regression/test_header_image06.rb +32 -0
  35. data/test/regression/test_header_image07.rb +29 -0
  36. data/test/regression/test_header_image08.rb +33 -0
  37. data/test/regression/test_header_image09.rb +36 -0
  38. data/test/regression/test_header_image10.rb +36 -0
  39. data/test/regression/test_header_image11.rb +28 -0
  40. data/test/regression/test_header_image12.rb +28 -0
  41. data/test/regression/test_header_image13.rb +36 -0
  42. data/test/regression/test_header_image14.rb +36 -0
  43. data/test/regression/test_image22.rb +24 -0
  44. data/test/regression/test_image23.rb +30 -0
  45. data/test/regression/test_image24.rb +24 -0
  46. data/test/regression/test_image25.rb +24 -0
  47. data/test/regression/test_image26.rb +30 -0
  48. data/test/regression/test_image27.rb +24 -0
  49. data/test/regression/xlsx_files/chart_scatter15.xlsx +0 -0
  50. data/test/regression/xlsx_files/header01.xlsx +0 -0
  51. data/test/regression/xlsx_files/header02.xlsx +0 -0
  52. data/test/regression/xlsx_files/header03.xlsx +0 -0
  53. data/test/regression/xlsx_files/header_image01.xlsx +0 -0
  54. data/test/regression/xlsx_files/header_image02.xlsx +0 -0
  55. data/test/regression/xlsx_files/header_image03.xlsx +0 -0
  56. data/test/regression/xlsx_files/header_image04.xlsx +0 -0
  57. data/test/regression/xlsx_files/header_image05.xlsx +0 -0
  58. data/test/regression/xlsx_files/header_image06.xlsx +0 -0
  59. data/test/regression/xlsx_files/header_image07.xlsx +0 -0
  60. data/test/regression/xlsx_files/header_image08.xlsx +0 -0
  61. data/test/regression/xlsx_files/header_image09.xlsx +0 -0
  62. data/test/regression/xlsx_files/header_image10.xlsx +0 -0
  63. data/test/regression/xlsx_files/header_image11.xlsx +0 -0
  64. data/test/regression/xlsx_files/header_image12.xlsx +0 -0
  65. data/test/regression/xlsx_files/header_image13.xlsx +0 -0
  66. data/test/regression/xlsx_files/header_image14.xlsx +0 -0
  67. data/test/regression/xlsx_files/image22.xlsx +0 -0
  68. data/test/regression/xlsx_files/image23.xlsx +0 -0
  69. data/test/regression/xlsx_files/image24.xlsx +0 -0
  70. data/test/regression/xlsx_files/image25.xlsx +0 -0
  71. data/test/regression/xlsx_files/image26.xlsx +0 -0
  72. data/test/regression/xlsx_files/image27.xlsx +0 -0
  73. metadata +119 -1
@@ -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 = false
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 = 1
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
- @page_setup.header = string
1193
- @page_setup.margin_header = margin
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
- # +-----+----| BITMAP |-----+
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.* )r:id="rId1"/, '\1').
135
+ sub(/(<pageSetup[^>]* )r:id="rId1"/, '\1').
136
136
  sub(/ +\/>/, ' />')
137
137
  end
138
138
 
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