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.
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