write_xlsx 0.58.0 → 0.59.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 (37) hide show
  1. data/README.rdoc +7 -1
  2. data/bin/extract_vba.rb +29 -0
  3. data/examples/add_vba_project.rb +36 -0
  4. data/examples/vbaProject.bin +0 -0
  5. data/lib/write_xlsx/chart.rb +22 -37
  6. data/lib/write_xlsx/package/conditional_format.rb +593 -0
  7. data/lib/write_xlsx/package/content_types.rb +17 -0
  8. data/lib/write_xlsx/package/packager.rb +26 -6
  9. data/lib/write_xlsx/package/relationships.rb +11 -1
  10. data/lib/write_xlsx/package/table.rb +284 -62
  11. data/lib/write_xlsx/utility.rb +179 -0
  12. data/lib/write_xlsx/version.rb +1 -1
  13. data/lib/write_xlsx/workbook.rb +14 -1
  14. data/lib/write_xlsx/worksheet.rb +667 -875
  15. data/test/package/table/test_table01.rb +1 -2
  16. data/test/package/table/test_table02.rb +1 -2
  17. data/test/package/table/test_table03.rb +1 -2
  18. data/test/package/table/test_table04.rb +1 -2
  19. data/test/package/table/test_table05.rb +1 -2
  20. data/test/package/table/test_table06.rb +1 -2
  21. data/test/package/table/test_table07.rb +1 -2
  22. data/test/package/table/test_table08.rb +1 -2
  23. data/test/package/table/test_table09.rb +1 -2
  24. data/test/package/table/test_table10.rb +1 -2
  25. data/test/package/table/test_table11.rb +1 -2
  26. data/test/package/table/test_table12.rb +1 -2
  27. data/test/package/table/test_write_auto_filter.rb +10 -3
  28. data/test/package/table/test_write_table_column.rb +9 -2
  29. data/test/package/table/test_write_table_style_info.rb +12 -11
  30. data/test/package/table/test_write_xml_declaration.rb +6 -1
  31. data/test/perl_output/add_vba_project.xlsm +0 -0
  32. data/test/regression/test_macro01.rb +29 -0
  33. data/test/regression/xlsx_files/macro01.xlsm +0 -0
  34. data/test/regression/xlsx_files/vbaProject01.bin +0 -0
  35. data/test/test_example_match.rb +22 -0
  36. data/test/vbaProject.bin +0 -0
  37. metadata +18 -3
@@ -13,8 +13,7 @@ class TestTable01 < Test::Unit::TestCase
13
13
  # Set the table properties.
14
14
  @worksheet.add_table('C3:F13')
15
15
 
16
- table = Writexlsx::Package::Table.new
17
- table.properties = @worksheet.tables[0]
16
+ table = @worksheet.tables[0]
18
17
  table.__send__(:assemble_xml_file)
19
18
 
20
19
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -13,8 +13,7 @@ class TestTable02 < Test::Unit::TestCase
13
13
  # Set the table properties.
14
14
  @worksheet.add_table('D4:I15', :style => 'Table Style Light 17')
15
15
 
16
- table = Writexlsx::Package::Table.new
17
- table.properties = @worksheet.tables[0]
16
+ table = @worksheet.tables[0]
18
17
  table.__send__(:assemble_xml_file)
19
18
 
20
19
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -21,8 +21,7 @@ class TestTable03 < Test::Unit::TestCase
21
21
  }
22
22
  )
23
23
 
24
- table = Writexlsx::Package::Table.new
25
- table.properties = @worksheet.tables[0]
24
+ table = @worksheet.tables[0]
26
25
  table.__send__(:assemble_xml_file)
27
26
 
28
27
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -18,8 +18,7 @@ class TestTable04 < Test::Unit::TestCase
18
18
  }
19
19
  )
20
20
 
21
- table = Writexlsx::Package::Table.new
22
- table.properties = @worksheet.tables[0]
21
+ table = @worksheet.tables[0]
23
22
  table.__send__(:assemble_xml_file)
24
23
 
25
24
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -18,8 +18,7 @@ class TestTable05 < Test::Unit::TestCase
18
18
  }
19
19
  )
20
20
 
21
- table = Writexlsx::Package::Table.new
22
- table.properties = @worksheet.tables[0]
21
+ table = @worksheet.tables[0]
23
22
  table.__send__(:assemble_xml_file)
24
23
 
25
24
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -23,8 +23,7 @@ class TestTable06 < Test::Unit::TestCase
23
23
  }
24
24
  )
25
25
 
26
- table = Writexlsx::Package::Table.new
27
- table.properties = @worksheet.tables[0]
26
+ table = @worksheet.tables[0]
28
27
  table.__send__(:assemble_xml_file)
29
28
 
30
29
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -18,8 +18,7 @@ class TestTable07 < Test::Unit::TestCase
18
18
  }
19
19
  )
20
20
 
21
- table = Writexlsx::Package::Table.new
22
- table.properties = @worksheet.tables[0]
21
+ table = @worksheet.tables[0]
23
22
  table.__send__(:assemble_xml_file)
24
23
 
25
24
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -24,8 +24,7 @@ class TestTable08 < Test::Unit::TestCase
24
24
  }
25
25
  )
26
26
 
27
- table = Writexlsx::Package::Table.new
28
- table.properties = @worksheet.tables[0]
27
+ table = @worksheet.tables[0]
29
28
  table.__send__(:assemble_xml_file)
30
29
 
31
30
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -30,8 +30,7 @@ class TestTable09 < Test::Unit::TestCase
30
30
  }
31
31
  )
32
32
 
33
- table = Writexlsx::Package::Table.new
34
- table.properties = @worksheet.tables[0]
33
+ table = @worksheet.tables[0]
35
34
  table.__send__(:assemble_xml_file)
36
35
 
37
36
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -16,8 +16,7 @@ class TestTable10 < Test::Unit::TestCase
16
16
  {:name => 'MyTable'}
17
17
  )
18
18
 
19
- table = Writexlsx::Package::Table.new
20
- table.properties = @worksheet.tables[0]
19
+ table = @worksheet.tables[0]
21
20
  table.__send__(:assemble_xml_file)
22
21
 
23
22
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -29,8 +29,7 @@ class TestTable11 < Test::Unit::TestCase
29
29
  }
30
30
  )
31
31
 
32
- table = Writexlsx::Package::Table.new
33
- table.properties = @worksheet.tables[0]
32
+ table = @worksheet.tables[0]
34
33
  table.__send__(:assemble_xml_file)
35
34
 
36
35
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -29,8 +29,7 @@ class TestTable12 < Test::Unit::TestCase
29
29
  }
30
30
  )
31
31
 
32
- table = Writexlsx::Package::Table.new
33
- table.properties = @worksheet.tables[0]
32
+ table = @worksheet.tables[0]
34
33
  table.__send__(:assemble_xml_file)
35
34
 
36
35
  result = got_to_array(table.instance_variable_get(:@writer).string)
@@ -1,13 +1,20 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require 'helper'
3
- require 'write_xlsx/package/table'
3
+ require 'write_xlsx'
4
+ require 'stringio'
4
5
 
5
6
  class TestTableWriteAutoFilter01 < Test::Unit::TestCase
7
+ def setup
8
+ workbook = WriteXLSX.new(StringIO.new)
9
+ @worksheet = workbook.add_worksheet
10
+ end
11
+
6
12
  def test_table_write_auto_filter
7
13
  expected = '<autoFilter ref="C3:F13"/>'
8
14
 
9
- table = Writexlsx::Package::Table.new
10
- table.instance_variable_get(:@properties)[:_autofilter] = 'C3:F13'
15
+ table = Writexlsx::Package::Table.new(@worksheet, 0, 1, 1, 2, 2)
16
+ table.instance_variable_set(:@autofilter, 'C3:F13')
17
+
11
18
  table.__send__(:write_auto_filter)
12
19
  result = table.instance_variable_get(:@writer).string
13
20
 
@@ -3,11 +3,18 @@ require 'helper'
3
3
  require 'write_xlsx/package/table'
4
4
 
5
5
  class TestTableWriteTableColumn < Test::Unit::TestCase
6
+ def setup
7
+ workbook = WriteXLSX.new(StringIO.new)
8
+ @worksheet = workbook.add_worksheet
9
+ end
10
+
6
11
  def test_table_write_table_column
7
12
  expected = '<tableColumn id="1" name="Column1"/>'
8
13
 
9
- table = Writexlsx::Package::Table.new
10
- table.__send__(:write_table_column, {:_name => 'Column1', :_id => 1})
14
+ table = Writexlsx::Package::Table.new(@worksheet, 0, 1, 1, 2, 2)
15
+ col_data = Writexlsx::Package::Table::ColumnData.new(1)
16
+
17
+ table.__send__(:write_table_column, col_data)
11
18
  result = table.instance_variable_get(:@writer).string
12
19
 
13
20
  assert_equal(expected, result)
@@ -3,20 +3,21 @@ require 'helper'
3
3
  require 'write_xlsx/package/table'
4
4
 
5
5
  class TestTableWriteTableStyleInfo < Test::Unit::TestCase
6
+ def setup
7
+ workbook = WriteXLSX.new(StringIO.new)
8
+ @worksheet = workbook.add_worksheet
9
+ end
10
+
6
11
  def test_table_write_table_style_info
7
12
  expected = '<tableStyleInfo name="TableStyleMedium9" showFirstColumn="0" showLastColumn="0" showRowStripes="1" showColumnStripes="0"/>'
8
13
 
9
- table = Writexlsx::Package::Table.new
10
- table.
11
- instance_variable_set(:@properties,
12
- {
13
- :_style => 'TableStyleMedium9',
14
- :_show_first_col => 0,
15
- :_show_last_col => 0,
16
- :_show_row_stripes => 1,
17
- :_show_col_stripes => 0
18
- }
19
- )
14
+ table = Writexlsx::Package::Table.new(@worksheet, 0, 1, 1, 2, 2)
15
+ table.instance_variable_set(:@style, 'TableStyleMedium9')
16
+ table.instance_variable_set(:@show_first_col, 0)
17
+ table.instance_variable_set(:@show_last_col, 0)
18
+ table.instance_variable_set(:@show_row_stripes, 1)
19
+ table.instance_variable_set(:@show_col_stripes, 0)
20
+
20
21
  table.__send__(:write_table_style_info)
21
22
  result = table.instance_variable_get(:@writer).string
22
23
 
@@ -3,10 +3,15 @@ require 'helper'
3
3
  require 'write_xlsx/package/table'
4
4
 
5
5
  class TestTableWriteXmlDeclaration < Test::Unit::TestCase
6
+ def setup
7
+ workbook = WriteXLSX.new(StringIO.new)
8
+ @worksheet = workbook.add_worksheet
9
+ end
10
+
6
11
  def test_table_write_xml_declaration
7
12
  expected = %Q{<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n}
8
13
 
9
- table = Writexlsx::Package::Table.new
14
+ table = Writexlsx::Package::Table.new(@worksheet, 0, 1, 1, 2, 2)
10
15
  table.__send__(:write_xml_declaration)
11
16
  result = table.instance_variable_get(:@writer).string
12
17
 
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ class TestRegressionMacro01 < 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_macro01
14
+ @xlsx = 'macro01.xlsm'
15
+ workbook = WriteXLSX.new(@xlsx)
16
+ worksheet = workbook.add_worksheet
17
+
18
+ workbook.add_vba_project(File.join(
19
+ @regression_output,
20
+ 'vbaProject01.bin'
21
+ )
22
+ )
23
+
24
+ worksheet.write('A1', 123)
25
+
26
+ workbook.close
27
+ compare_xlsx_for_regression(File.join(@regression_output, @xlsx), @xlsx)
28
+ end
29
+ end
@@ -4837,4 +4837,26 @@ EOS
4837
4837
  workbook.close
4838
4838
  compare_xlsx(File.join(@perl_output, @xlsx), @xlsx)
4839
4839
  end
4840
+
4841
+ def test_add_vba_project
4842
+ @xlsx = 'add_vba_project.xlsm'
4843
+ workbook = WriteXLSX.new(@xlsx)
4844
+ worksheet = workbook.add_worksheet
4845
+
4846
+ worksheet.set_column('A:A', 50)
4847
+
4848
+ # Add the VBA project binary.
4849
+ workbook.add_vba_project(File.join(@test_dir, 'vbaProject.bin'))
4850
+
4851
+ # Show text for the end user.
4852
+ worksheet.write('A1', 'Run the SampleMacro embedded in this file.')
4853
+ worksheet.write('A2', 'You may have to turn on the Excel Developer option first.')
4854
+
4855
+ # Call a user defined function from the VBA project.
4856
+ worksheet.write('A6', 'Result from a user defined function:')
4857
+ worksheet.write('B6', '=MyFunction(7)')
4858
+
4859
+ workbook.close
4860
+ compare_xlsx(File.join(@perl_output, @xlsx), @xlsx)
4861
+ end
4840
4862
  end
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: write_xlsx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.58.0
4
+ version: 0.59.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-10 00:00:00.000000000 Z
12
+ date: 2013-02-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubyzip
@@ -39,7 +39,8 @@ description: ! "write_xlsx s a gem to create a new file in the Excel 2007+ XLSX
39
39
  in this gem.\n"
40
40
  email:
41
41
  - cxn03651@msj.biglobe.ne.jp
42
- executables: []
42
+ executables:
43
+ - extract_vba.rb
43
44
  extensions: []
44
45
  extra_rdoc_files:
45
46
  - LICENSE.txt
@@ -52,7 +53,9 @@ files:
52
53
  - LICENSE.txt
53
54
  - README.rdoc
54
55
  - Rakefile
56
+ - bin/extract_vba.rb
55
57
  - examples/a_simple.rb
58
+ - examples/add_vba_project.rb
56
59
  - examples/array_formula.rb
57
60
  - examples/autofilter.rb
58
61
  - examples/chart_area.rb
@@ -107,6 +110,7 @@ files:
107
110
  - examples/stocks.rb
108
111
  - examples/tab_colors.rb
109
112
  - examples/tables.rb
113
+ - examples/vbaProject.bin
110
114
  - lib/write_xlsx.rb
111
115
  - lib/write_xlsx/chart.rb
112
116
  - lib/write_xlsx/chart/area.rb
@@ -124,6 +128,7 @@ files:
124
128
  - lib/write_xlsx/format.rb
125
129
  - lib/write_xlsx/package/app.rb
126
130
  - lib/write_xlsx/package/comments.rb
131
+ - lib/write_xlsx/package/conditional_format.rb
127
132
  - lib/write_xlsx/package/content_types.rb
128
133
  - lib/write_xlsx/package/core.rb
129
134
  - lib/write_xlsx/package/packager.rb
@@ -254,6 +259,7 @@ files:
254
259
  - test/package/vml/test_write_stroke.rb
255
260
  - test/package/vml/test_write_textbox.rb
256
261
  - test/perl_output/a_simple.xlsx
262
+ - test/perl_output/add_vba_project.xlsm
257
263
  - test/perl_output/array_formula.xlsx
258
264
  - test/perl_output/autofilter.xlsx
259
265
  - test/perl_output/chart_area.xlsx
@@ -533,6 +539,7 @@ files:
533
539
  - test/regression/test_image05.rb
534
540
  - test/regression/test_image06.rb
535
541
  - test/regression/test_image07.rb
542
+ - test/regression/test_macro01.rb
536
543
  - test/regression/test_outline01.rb
537
544
  - test/regression/test_outline02.rb
538
545
  - test/regression/test_outline03.rb
@@ -833,6 +840,7 @@ files:
833
840
  - test/regression/xlsx_files/image05.xlsx
834
841
  - test/regression/xlsx_files/image06.xlsx
835
842
  - test/regression/xlsx_files/image07.xlsx
843
+ - test/regression/xlsx_files/macro01.xlsm
836
844
  - test/regression/xlsx_files/outline01.xlsx
837
845
  - test/regression/xlsx_files/outline02.xlsx
838
846
  - test/regression/xlsx_files/outline03.xlsx
@@ -919,9 +927,11 @@ files:
919
927
  - test/regression/xlsx_files/table12.xlsx
920
928
  - test/regression/xlsx_files/table13.xlsx
921
929
  - test/regression/xlsx_files/table14.xlsx
930
+ - test/regression/xlsx_files/vbaProject01.bin
922
931
  - test/test_delete_files.rb
923
932
  - test/test_example_match.rb
924
933
  - test/test_xml_writer_simple.rb
934
+ - test/vbaProject.bin
925
935
  - test/workbook/test_get_chart_range.rb
926
936
  - test/workbook/test_sort_defined_names.rb
927
937
  - test/workbook/test_workbook_01.rb
@@ -1162,6 +1172,7 @@ test_files:
1162
1172
  - test/package/vml/test_write_stroke.rb
1163
1173
  - test/package/vml/test_write_textbox.rb
1164
1174
  - test/perl_output/a_simple.xlsx
1175
+ - test/perl_output/add_vba_project.xlsm
1165
1176
  - test/perl_output/array_formula.xlsx
1166
1177
  - test/perl_output/autofilter.xlsx
1167
1178
  - test/perl_output/chart_area.xlsx
@@ -1441,6 +1452,7 @@ test_files:
1441
1452
  - test/regression/test_image05.rb
1442
1453
  - test/regression/test_image06.rb
1443
1454
  - test/regression/test_image07.rb
1455
+ - test/regression/test_macro01.rb
1444
1456
  - test/regression/test_outline01.rb
1445
1457
  - test/regression/test_outline02.rb
1446
1458
  - test/regression/test_outline03.rb
@@ -1741,6 +1753,7 @@ test_files:
1741
1753
  - test/regression/xlsx_files/image05.xlsx
1742
1754
  - test/regression/xlsx_files/image06.xlsx
1743
1755
  - test/regression/xlsx_files/image07.xlsx
1756
+ - test/regression/xlsx_files/macro01.xlsm
1744
1757
  - test/regression/xlsx_files/outline01.xlsx
1745
1758
  - test/regression/xlsx_files/outline02.xlsx
1746
1759
  - test/regression/xlsx_files/outline03.xlsx
@@ -1827,9 +1840,11 @@ test_files:
1827
1840
  - test/regression/xlsx_files/table12.xlsx
1828
1841
  - test/regression/xlsx_files/table13.xlsx
1829
1842
  - test/regression/xlsx_files/table14.xlsx
1843
+ - test/regression/xlsx_files/vbaProject01.bin
1830
1844
  - test/test_delete_files.rb
1831
1845
  - test/test_example_match.rb
1832
1846
  - test/test_xml_writer_simple.rb
1847
+ - test/vbaProject.bin
1833
1848
  - test/workbook/test_get_chart_range.rb
1834
1849
  - test/workbook/test_sort_defined_names.rb
1835
1850
  - test/workbook/test_workbook_01.rb