write_xlsx 1.02.0 → 1.04.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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/Changes +22 -0
  3. data/README.md +1 -1
  4. data/examples/chart_line.rb +85 -10
  5. data/examples/tables.rb +77 -42
  6. data/lib/write_xlsx/chart/line.rb +15 -1
  7. data/lib/write_xlsx/format.rb +5 -5
  8. data/lib/write_xlsx/package/comments.rb +4 -4
  9. data/lib/write_xlsx/package/relationships.rb +2 -2
  10. data/lib/write_xlsx/package/styles.rb +26 -8
  11. data/lib/write_xlsx/package/table.rb +8 -7
  12. data/lib/write_xlsx/package/vml.rb +20 -19
  13. data/lib/write_xlsx/sheets.rb +12 -20
  14. data/lib/write_xlsx/version.rb +1 -1
  15. data/lib/write_xlsx/workbook.rb +53 -35
  16. data/lib/write_xlsx/worksheet.rb +37 -20
  17. data/test/perl_output/chart_line.xlsx +0 -0
  18. data/test/perl_output/comments2.xlsx +0 -0
  19. data/test/perl_output/tables.xlsx +0 -0
  20. data/test/regression/images/red2.png +0 -0
  21. data/test/regression/test_chart_line05.rb +43 -0
  22. data/test/regression/test_chart_line06.rb +43 -0
  23. data/test/regression/test_comment15.rb +28 -0
  24. data/test/regression/test_comment16.rb +34 -0
  25. data/test/regression/test_header_image15.rb +36 -0
  26. data/test/regression/test_header_image16.rb +42 -0
  27. data/test/regression/test_header_image17.rb +46 -0
  28. data/test/regression/test_header_image18.rb +48 -0
  29. data/test/regression/test_header_image19.rb +36 -0
  30. data/test/regression/test_hyperlink48.rb +31 -0
  31. data/test/regression/test_hyperlink49.rb +29 -0
  32. data/test/regression/test_image45.rb +2 -1
  33. data/test/regression/test_image46.rb +1 -1
  34. data/test/regression/test_image48.rb +32 -0
  35. data/test/regression/test_image49.rb +38 -0
  36. data/test/regression/test_image50.rb +24 -0
  37. data/test/regression/test_image51.rb +30 -0
  38. data/test/regression/test_object_position12.rb +25 -0
  39. data/test/regression/test_object_position13.rb +25 -0
  40. data/test/regression/test_object_position14.rb +25 -0
  41. data/test/regression/test_object_position15.rb +29 -0
  42. data/test/regression/test_object_position16.rb +29 -0
  43. data/test/regression/test_object_position17.rb +29 -0
  44. data/test/regression/test_object_position18.rb +29 -0
  45. data/test/regression/test_object_position19.rb +29 -0
  46. data/test/regression/test_object_position20.rb +29 -0
  47. data/test/regression/test_table24.rb +27 -0
  48. data/test/regression/test_table25.rb +27 -0
  49. data/test/regression/xlsx_files/chart_line05.xlsx +0 -0
  50. data/test/regression/xlsx_files/chart_line06.xlsx +0 -0
  51. data/test/regression/xlsx_files/comment15.xlsx +0 -0
  52. data/test/regression/xlsx_files/comment16.xlsx +0 -0
  53. data/test/regression/xlsx_files/header_image15.xlsx +0 -0
  54. data/test/regression/xlsx_files/header_image16.xlsx +0 -0
  55. data/test/regression/xlsx_files/header_image17.xlsx +0 -0
  56. data/test/regression/xlsx_files/header_image18.xlsx +0 -0
  57. data/test/regression/xlsx_files/header_image19.xlsx +0 -0
  58. data/test/regression/xlsx_files/hyperlink46.xlsx +0 -0
  59. data/test/regression/xlsx_files/image45.xlsx +0 -0
  60. data/test/regression/xlsx_files/image46.xlsx +0 -0
  61. data/test/regression/xlsx_files/image48.xlsx +0 -0
  62. data/test/regression/xlsx_files/image49.xlsx +0 -0
  63. data/test/regression/xlsx_files/image50.xlsx +0 -0
  64. data/test/regression/xlsx_files/image51.xlsx +0 -0
  65. data/test/regression/xlsx_files/object_position12.xlsx +0 -0
  66. data/test/regression/xlsx_files/object_position13.xlsx +0 -0
  67. data/test/regression/xlsx_files/object_position14.xlsx +0 -0
  68. data/test/regression/xlsx_files/object_position15.xlsx +0 -0
  69. data/test/regression/xlsx_files/object_position16.xlsx +0 -0
  70. data/test/regression/xlsx_files/object_position17.xlsx +0 -0
  71. data/test/regression/xlsx_files/object_position18.xlsx +0 -0
  72. data/test/regression/xlsx_files/object_position19.xlsx +0 -0
  73. data/test/regression/xlsx_files/object_position20.xlsx +0 -0
  74. data/test/regression/xlsx_files/table24.xlsx +0 -0
  75. data/test/regression/xlsx_files/table25.xlsx +0 -0
  76. data/test/test_example_match.rb +119 -9
  77. data/test/workbook/test_check_sheetname.rb +0 -10
  78. data/write_xlsx.gemspec +1 -0
  79. metadata +120 -2
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,43 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionChartLine05 < Minitest::Test
5
+ def setup
6
+ setup_dir_var
7
+ end
8
+
9
+ def teardown
10
+ @tempfile.close(true)
11
+ end
12
+
13
+ def test_chart_line05
14
+ @xlsx = 'chart_line05.xlsx'
15
+ workbook = WriteXLSX.new(@io)
16
+ worksheet = workbook.add_worksheet
17
+ chart = workbook.add_chart(
18
+ :type => 'line',
19
+ :subtype => 'stacked',
20
+ :embedded => 1
21
+ )
22
+
23
+ # For testing, copy the randomly generated axis ids in the target xlsx file.
24
+ chart.instance_variable_set(:@axis_ids, [108321408, 108634112])
25
+
26
+ data = [
27
+ [1, 2, 3, 4, 5],
28
+ [2, 4, 6, 8, 10],
29
+ [3, 6, 9, 12, 15]
30
+ ]
31
+
32
+ worksheet.write('A1', data)
33
+
34
+ chart.add_series(:values => '=Sheet1!$A$1:$A$5')
35
+ chart.add_series(:values => '=Sheet1!$B$1:$B$5')
36
+ chart.add_series(:values => '=Sheet1!$C$1:$C$5')
37
+
38
+ worksheet.insert_chart('E9', chart)
39
+
40
+ workbook.close
41
+ compare_for_regression
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionChartLine06 < Minitest::Test
5
+ def setup
6
+ setup_dir_var
7
+ end
8
+
9
+ def teardown
10
+ @tempfile.close(true)
11
+ end
12
+
13
+ def test_chart_line06
14
+ @xlsx = 'chart_line06.xlsx'
15
+ workbook = WriteXLSX.new(@io)
16
+ worksheet = workbook.add_worksheet
17
+ chart = workbook.add_chart(
18
+ :type => 'line',
19
+ :subtype => 'percent_stacked',
20
+ :embedded => 1
21
+ )
22
+
23
+ # For testing, copy the randomly generated axis ids in the target xlsx file.
24
+ chart.instance_variable_set(:@axis_ids, [108321408, 108634112])
25
+
26
+ data = [
27
+ [1, 2, 3, 4, 5],
28
+ [2, 4, 6, 8, 10],
29
+ [3, 6, 9, 12, 15]
30
+ ]
31
+
32
+ worksheet.write('A1', data)
33
+
34
+ chart.add_series(:values => '=Sheet1!$A$1:$A$5')
35
+ chart.add_series(:values => '=Sheet1!$B$1:$B$5')
36
+ chart.add_series(:values => '=Sheet1!$C$1:$C$5')
37
+
38
+ worksheet.insert_chart('E9', chart)
39
+
40
+ workbook.close
41
+ compare_for_regression
42
+ end
43
+ end
@@ -0,0 +1,28 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionComment15 < Minitest::Test
5
+ def setup
6
+ setup_dir_var
7
+ end
8
+
9
+ def teardown
10
+ @tempfile.close(true)
11
+ end
12
+
13
+ def test_comment15
14
+ @xlsx = 'comment15.xlsx'
15
+ workbook = WriteXLSX.new(@io)
16
+ worksheet = workbook.add_worksheet
17
+ format1 = workbook.add_format(:bold => 1)
18
+
19
+ worksheet.write('A1', 'Foo', format1)
20
+ worksheet.write_comment('B2', 'Some text')
21
+
22
+ # Set the author to match the target XLSX file.
23
+ worksheet.comments_author = 'John'
24
+
25
+ workbook.close
26
+ compare_for_regression
27
+ end
28
+ end
@@ -0,0 +1,34 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionComment16 < Minitest::Test
5
+ def setup
6
+ setup_dir_var
7
+ end
8
+
9
+ def teardown
10
+ @tempfile.close(true)
11
+ end
12
+
13
+ def test_comment16
14
+ @xlsx = 'comment16.xlsx'
15
+ workbook = WriteXLSX.new(@io)
16
+ worksheet = workbook.add_worksheet
17
+
18
+ worksheet.write('A1', 'Foo')
19
+ worksheet.write('C7', 'Bar')
20
+ worksheet.write('G14', 'Baz')
21
+
22
+ worksheet.write_comment('A1', 'Some text')
23
+ worksheet.write_comment('D1', 'Some text')
24
+ worksheet.write_comment('C7', 'Some text')
25
+ worksheet.write_comment('E10', 'Some text')
26
+ worksheet.write_comment('G14', 'Some text')
27
+
28
+ # Set the author to match the target XLSX file.
29
+ worksheet.comments_author = 'John'
30
+
31
+ workbook.close
32
+ compare_for_regression
33
+ end
34
+ end
@@ -0,0 +1,36 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionHeaderImage15 < Minitest::Test
5
+ def setup
6
+ setup_dir_var
7
+ end
8
+
9
+ def teardown
10
+ @tempfile.close(true)
11
+ end
12
+
13
+ def test_header_image15
14
+ @xlsx = 'header_image15.xlsx'
15
+ workbook = WriteXLSX.new(@io)
16
+ worksheet1 = workbook.add_worksheet
17
+ worksheet2 = workbook.add_worksheet
18
+
19
+ worksheet1.set_header(
20
+ '&L&G', nil, {:image_left => 'test/regression/images/red.jpg'}
21
+ )
22
+ worksheet2.set_header(
23
+ '&L&G', nil, {:image_left => 'test/regression/images/red.jpg'}
24
+ )
25
+
26
+
27
+ workbook.close
28
+ compare_for_regression(
29
+ [],
30
+ {
31
+ 'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ],
32
+ 'xl/worksheets/sheet2.xml' => [ '<pageMargins', '<pageSetup' ]
33
+ }
34
+ )
35
+ end
36
+ end
@@ -0,0 +1,42 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionHeaderImage16 < Minitest::Test
5
+ def setup
6
+ setup_dir_var
7
+ end
8
+
9
+ def teardown
10
+ @tempfile.close(true)
11
+ end
12
+
13
+ def test_header_image16
14
+ @xlsx = 'header_image16.xlsx'
15
+ workbook = WriteXLSX.new(@io)
16
+ worksheet1 = workbook.add_worksheet
17
+ worksheet2 = workbook.add_worksheet
18
+
19
+ worksheet1.set_header(
20
+ '&L&G', nil, {:image_left => 'test/regression/images/red.jpg'}
21
+ )
22
+ worksheet2.set_header(
23
+ '&L&G', nil, {:image_left => 'test/regression/images/red.jpg'}
24
+ )
25
+
26
+ worksheet1.set_footer(
27
+ '&R&G', nil, {:image_right => 'test/regression/images/red.jpg'}
28
+ )
29
+ worksheet2.set_footer(
30
+ '&R&G', nil, {:image_right => 'test/regression/images/red.jpg'}
31
+ )
32
+
33
+ workbook.close
34
+ compare_for_regression(
35
+ [],
36
+ {
37
+ 'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ],
38
+ 'xl/worksheets/sheet2.xml' => [ '<pageMargins', '<pageSetup' ]
39
+ }
40
+ )
41
+ end
42
+ end
@@ -0,0 +1,46 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionHeaderImage17 < Minitest::Test
5
+ def setup
6
+ setup_dir_var
7
+ end
8
+
9
+ def teardown
10
+ @tempfile.close(true)
11
+ end
12
+
13
+ def test_header_image17
14
+ @xlsx = 'header_image17.xlsx'
15
+ workbook = WriteXLSX.new(@io)
16
+ worksheet = workbook.add_worksheet
17
+
18
+ worksheet.set_header(
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/red.jpg'
25
+ }
26
+ )
27
+
28
+ worksheet.set_footer(
29
+ '&L&G&C&G&R&G',
30
+ nil,
31
+ {
32
+ :image_left => 'test/regression/images/blue.jpg',
33
+ :image_center => 'test/regression/images/red.jpg',
34
+ :image_right => 'test/regression/images/blue.jpg'
35
+ }
36
+ )
37
+
38
+ workbook.close
39
+ compare_for_regression(
40
+ [],
41
+ {
42
+ 'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]
43
+ }
44
+ )
45
+ end
46
+ end
@@ -0,0 +1,48 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionHeaderImage18 < Minitest::Test
5
+ def setup
6
+ setup_dir_var
7
+ end
8
+
9
+ def teardown
10
+ @tempfile.close(true)
11
+ end
12
+
13
+ def test_header_image18
14
+ @xlsx = 'header_image18.xlsx'
15
+ workbook = WriteXLSX.new(@io)
16
+ worksheet = workbook.add_worksheet
17
+
18
+ worksheet.insert_image('E9', 'test/regression/images/red.png')
19
+
20
+ worksheet.set_header(
21
+ '&L&G&C&G&R&G',
22
+ nil,
23
+ {
24
+ :image_left => 'test/regression/images/red.jpg',
25
+ :image_center => 'test/regression/images/blue.jpg',
26
+ :image_right => 'test/regression/images/red.jpg'
27
+ }
28
+ )
29
+
30
+ worksheet.set_footer(
31
+ '&L&G&C&G&R&G',
32
+ nil,
33
+ {
34
+ :image_left => 'test/regression/images/blue.jpg',
35
+ :image_center => 'test/regression/images/red.jpg',
36
+ :image_right => 'test/regression/images/blue.jpg'
37
+ }
38
+ )
39
+
40
+ workbook.close
41
+ compare_for_regression(
42
+ [],
43
+ {
44
+ 'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]
45
+ }
46
+ )
47
+ end
48
+ end
@@ -0,0 +1,36 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionHeaderImage19 < Minitest::Test
5
+ def setup
6
+ setup_dir_var
7
+ end
8
+
9
+ def teardown
10
+ @tempfile.close(true)
11
+ end
12
+
13
+ def test_header_image19
14
+ @xlsx = 'header_image19.xlsx'
15
+ workbook = WriteXLSX.new(@io)
16
+ worksheet = workbook.add_worksheet
17
+
18
+ worksheet.insert_image('E9', 'test/regression/images/red.jpg')
19
+
20
+ worksheet.set_header(
21
+ '&L&G',
22
+ nil,
23
+ {
24
+ :image_left => 'test/regression/images/red.jpg'
25
+ }
26
+ )
27
+
28
+ workbook.close
29
+ compare_for_regression(
30
+ [],
31
+ {
32
+ 'xl/worksheets/sheet1.xml' => [ '<pageMargins', '<pageSetup' ]
33
+ }
34
+ )
35
+ end
36
+ end
@@ -0,0 +1,31 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionHyperlink48 < Minitest::Test
5
+ def setup
6
+ setup_dir_var
7
+ end
8
+
9
+ def teardown
10
+ @tempfile.close(true) if @tempfile
11
+ end
12
+
13
+ def test_hyperlink48
14
+ @xlsx = 'hyperlink48.xlsx'
15
+ workbook = WriteXLSX.new(@io)
16
+ worksheet = workbook.add_worksheet
17
+
18
+ worksheet.insert_image(
19
+ 'E9', 'test/regression/images/red.png',
20
+ :url => 'https://github.com/jmcnamara'
21
+ )
22
+ worksheet.insert_image(
23
+ 'E13', 'test/regression/images/red.png',
24
+ :url => 'https://github.com/jmcnamara'
25
+ )
26
+
27
+ workbook.close
28
+
29
+ compare_for_regression
30
+ end
31
+ end
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionHyperlink49 < Minitest::Test
5
+ def setup
6
+ setup_dir_var
7
+ end
8
+
9
+ def teardown
10
+ @tempfile.close(true) if @tempfile
11
+ end
12
+
13
+ def test_hyperlink49
14
+ @xlsx = 'hyperlink49.xlsx'
15
+ workbook = WriteXLSX.new(@io)
16
+ worksheet = workbook.add_worksheet
17
+
18
+ worksheet.write_url('A1', 'https://github.com/jmcnamara')
19
+
20
+ worksheet.insert_image(
21
+ 'E9', 'test/regression/images/red.png',
22
+ :url => 'https://github.com/jmcnamara'
23
+ )
24
+
25
+ workbook.close
26
+
27
+ compare_for_regression
28
+ end
29
+ end
@@ -17,7 +17,8 @@ def test_image45
17
17
 
18
18
  worksheet.insert_image(
19
19
  'E9',
20
- File.join(@test_dir, 'regression', 'images/red.png')
20
+ File.join(@test_dir, 'regression', 'images/red.png'),
21
+ :object_position => 4
21
22
  )
22
23
 
23
24
  worksheet.set_row(8, 30, nil, 1)