axlsx 1.1.7 → 1.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. data/README.md +41 -5
  2. data/Rakefile +3 -2
  3. data/examples/chart_colors.rb +18 -3
  4. data/examples/example.rb +100 -46
  5. data/examples/extractive.pdf +0 -0
  6. data/lib/axlsx.rb +7 -6
  7. data/lib/axlsx/content_type/content_type.rb +2 -0
  8. data/lib/axlsx/content_type/default.rb +21 -12
  9. data/lib/axlsx/content_type/override.rb +22 -11
  10. data/lib/axlsx/doc_props/app.rb +36 -32
  11. data/lib/axlsx/doc_props/core.rb +9 -5
  12. data/lib/axlsx/drawing/ax_data_source.rb +7 -6
  13. data/lib/axlsx/drawing/axis.rb +48 -27
  14. data/lib/axlsx/drawing/bar_3D_chart.rb +47 -37
  15. data/lib/axlsx/drawing/bar_series.rb +1 -0
  16. data/lib/axlsx/drawing/cat_axis.rb +42 -38
  17. data/lib/axlsx/drawing/chart.rb +34 -27
  18. data/lib/axlsx/drawing/drawing.rb +5 -4
  19. data/lib/axlsx/drawing/line_3D_chart.rb +1 -1
  20. data/lib/axlsx/drawing/num_data_source.rb +1 -1
  21. data/lib/axlsx/drawing/pie_3D_chart.rb +7 -7
  22. data/lib/axlsx/drawing/two_cell_anchor.rb +3 -8
  23. data/lib/axlsx/drawing/view_3D.rb +41 -31
  24. data/lib/axlsx/drawing/vml_drawing.rb +1 -1
  25. data/lib/axlsx/package.rb +11 -11
  26. data/lib/axlsx/rels/relationship.rb +3 -3
  27. data/lib/axlsx/stylesheet/styles.rb +1 -1
  28. data/lib/axlsx/util/constants.rb +4 -0
  29. data/lib/axlsx/util/simple_typed_list.rb +2 -2
  30. data/lib/axlsx/util/validators.rb +2 -2
  31. data/lib/axlsx/version.rb +1 -1
  32. data/lib/axlsx/workbook/workbook.rb +1 -2
  33. data/lib/axlsx/workbook/worksheet/cell.rb +1 -1
  34. data/lib/axlsx/workbook/worksheet/data_bar.rb +1 -1
  35. data/lib/axlsx/workbook/worksheet/page_setup.rb +9 -0
  36. data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -0
  37. data/lib/axlsx/workbook/worksheet/worksheet.rb +180 -56
  38. data/test/content_type/tc_content_type.rb +1 -6
  39. data/test/doc_props/tc_core.rb +1 -1
  40. data/test/drawing/tc_axis.rb +8 -0
  41. data/test/drawing/tc_bar_3D_chart.rb +12 -12
  42. data/test/drawing/tc_bar_series.rb +0 -1
  43. data/test/drawing/tc_chart.rb +1 -5
  44. data/test/drawing/tc_pie_3D_chart.rb +3 -7
  45. data/test/drawing/tc_view_3D.rb +18 -18
  46. data/test/tc_package.rb +2 -0
  47. data/test/workbook/worksheet/tc_page_setup.rb +20 -3
  48. data/test/workbook/worksheet/tc_protected_range.rb +18 -0
  49. data/test/workbook/worksheet/tc_selection.rb +1 -1
  50. data/test/workbook/worksheet/tc_worksheet.rb +39 -18
  51. metadata +54 -103
  52. data/examples/axis-titles.xlsx +0 -0
  53. data/examples/basic_charts.xlsx +0 -0
  54. data/examples/chart_colors.xlsx +0 -0
  55. data/examples/charts.xlsx +0 -0
  56. data/examples/conditional_formatting/getting_barred.xlsx +0 -0
  57. data/examples/doc/_index.html +0 -84
  58. data/examples/doc/class_list.html +0 -47
  59. data/examples/doc/css/common.css +0 -1
  60. data/examples/doc/css/full_list.css +0 -55
  61. data/examples/doc/css/style.css +0 -322
  62. data/examples/doc/file_list.html +0 -46
  63. data/examples/doc/frames.html +0 -13
  64. data/examples/doc/index.html +0 -84
  65. data/examples/doc/js/app.js +0 -205
  66. data/examples/doc/js/full_list.js +0 -173
  67. data/examples/doc/js/jquery.js +0 -16
  68. data/examples/doc/method_list.html +0 -46
  69. data/examples/doc/top-level-namespace.html +0 -95
  70. data/examples/example.xlsx +0 -0
  71. data/examples/example_streamed.xlsx +0 -0
  72. data/examples/examples_saved.xlsx +0 -0
  73. data/examples/extractive.xlsx +0 -0
  74. data/examples/fish.xlsx +0 -0
  75. data/examples/no-use_autowidth.xlsx +0 -0
  76. data/examples/pareto.rb +0 -28
  77. data/examples/pareto.xlsx +0 -0
  78. data/examples/pie_chart_excel.xlsx +0 -0
  79. data/examples/pie_chart_saved.xlsx +0 -0
  80. data/examples/shared_strings_example.xlsx +0 -0
  81. data/examples/sheet_protection.xlsx +0 -0
  82. data/examples/sheet_view.xlsx +0 -0
  83. data/examples/two_cell_anchor_image.xlsx +0 -0
  84. data/examples/~$example.xlsx +0 -0
  85. data/lib/axlsx/drawing/ax_data_source.rb~ +0 -55
  86. data/lib/axlsx/drawing/data_source.rb~ +0 -51
  87. data/lib/axlsx/drawing/hlink_click.rb~ +0 -0
  88. data/lib/axlsx/drawing/hyperlink.rb~ +0 -64
  89. data/lib/axlsx/drawing/num_data.rb~ +0 -51
  90. data/lib/axlsx/drawing/num_data_source.rb~ +0 -54
  91. data/lib/axlsx/drawing/num_val.rb~ +0 -40
  92. data/lib/axlsx/drawing/picture_locking.rb~ +0 -36
  93. data/lib/axlsx/drawing/ref.rb~ +0 -41
  94. data/lib/axlsx/drawing/str_data.rb~ +0 -58
  95. data/lib/axlsx/drawing/str_val.rb~ +0 -35
  96. data/lib/axlsx/drawing/vml_drawing.rb~ +0 -6
  97. data/lib/axlsx/drawing/vml_shape.rb~ +0 -61
  98. data/lib/axlsx/util/cbf.rb +0 -333
  99. data/lib/axlsx/util/cfb.rb~ +0 -201
  100. data/lib/axlsx/util/font_tables.rb~ +0 -0
  101. data/lib/axlsx/util/ms_off_crypto.rb +0 -189
  102. data/lib/axlsx/util/ms_off_crypto.rb~ +0 -3
  103. data/lib/axlsx/util/ms_offcrypto.rb~ +0 -0
  104. data/lib/axlsx/util/parser.rb~ +0 -6
  105. data/lib/axlsx/util/storage.rb~ +0 -0
  106. data/lib/axlsx/workbook/shared_strings_table.rb~ +0 -69
  107. data/lib/axlsx/workbook/worksheet/cfvo.rb~ +0 -0
  108. data/lib/axlsx/workbook/worksheet/col.rb~ +0 -0
  109. data/lib/axlsx/workbook/worksheet/color_scale.rb~ +0 -46
  110. data/lib/axlsx/workbook/worksheet/comment.rb~ +0 -91
  111. data/lib/axlsx/workbook/worksheet/comments.rb~ +0 -86
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb~ +0 -0
  113. data/lib/axlsx/workbook/worksheet/icon_set.rb~ +0 -95
  114. data/lib/axlsx/workbook/worksheet/shared_strings_table.rb~ +0 -0
  115. data/lib/axlsx/workbook/worksheet/table.rb~ +0 -97
  116. data/lib/schema/dc.xsd~ +0 -118
  117. data/lib/schema/dcterms.xsd~ +0 -331
  118. data/lib/schema/opc-coreProperties.xsd~ +0 -50
  119. data/test/drawing/tc_data_source.rb~ +0 -30
  120. data/test/drawing/tc_num_data.rb~ +0 -35
  121. data/test/drawing/tc_num_val.rb~ +0 -29
  122. data/test/drawing/tc_str_data.rb~ +0 -30
  123. data/test/drawing/tc_str_val.rb~ +0 -26
  124. data/test/drawing/tc_vml_drawing.rb~ +0 -0
  125. data/test/workbook/worksheet/table/tc_table.rb~ +0 -72
  126. data/test/workbook/worksheet/tc_cfvo.rb~ +0 -20
  127. data/test/workbook/worksheet/tc_col.rb~ +0 -10
  128. data/test/workbook/worksheet/tc_color_scale.rb~ +0 -0
  129. data/test/workbook/worksheet/tc_data_bar.rb~ +0 -0
  130. data/test/workbook/worksheet/tc_icon_set.rb~ +0 -0
@@ -9,12 +9,7 @@ class TestContentType < Test::Unit::TestCase
9
9
 
10
10
  def test_valid_document
11
11
  schema = Nokogiri::XML::Schema(File.open(Axlsx::CONTENT_TYPES_XSD))
12
- errors = []
13
- schema.validate(@doc).each do |error|
14
- puts error.message
15
- errors << error
16
- end
17
- assert_equal(errors.size, 0, "[Content Types].xml Invalid" + errors.map{ |e| e.message }.to_s)
12
+ assert(schema.validate(@doc).map{ |e| puts e.message; e.message }.empty?)
18
13
  end
19
14
 
20
15
  def test_pre_built_types
@@ -5,7 +5,7 @@ class TestCore < Test::Unit::TestCase
5
5
  def setup
6
6
  @core = Axlsx::Core.new
7
7
  # could still see some false positives if the second changes between the next two calls
8
- @time = Time.now.strftime('%Y-%m-%dT%H:%M:%S')
8
+ @time = Time.now.strftime('%Y-%m-%dT%H:%M:%SZ')
9
9
  @doc = Nokogiri::XML(@core.to_xml_string)
10
10
  end
11
11
 
@@ -19,6 +19,14 @@ class TestAxis < Test::Unit::TestCase
19
19
  assert_equal('Foo', @axis.title.text)
20
20
  end
21
21
 
22
+ def test_color
23
+ @axis.color = "00FF00"
24
+ str = '<?xml version="1.0" encoding="UTF-8"?>'
25
+ str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '">'
26
+ doc = Nokogiri::XML(@axis.to_xml_string(str))
27
+ assert(doc.xpath("//a:srgbClr[@val='00FF00']"))
28
+ end
29
+
22
30
  def test_cell_based_axis_title
23
31
  p = Axlsx::Package.new
24
32
  p.workbook.add_worksheet(:name=>'foosheet') do |sheet|
@@ -15,15 +15,15 @@ class TestBar3DChart < Test::Unit::TestCase
15
15
  def test_initialization
16
16
  assert_equal(@chart.grouping, :clustered, "grouping defualt incorrect")
17
17
  assert_equal(@chart.series_type, Axlsx::BarSeries, "series type incorrect")
18
- assert_equal(@chart.barDir, :bar, " bar direction incorrect")
19
- assert(@chart.catAxis.is_a?(Axlsx::CatAxis), "category axis not created")
20
- assert(@chart.valAxis.is_a?(Axlsx::ValAxis), "value access not created")
18
+ assert_equal(@chart.bar_dir, :bar, " bar direction incorrect")
19
+ assert(@chart.cat_axis.is_a?(Axlsx::CatAxis), "category axis not created")
20
+ assert(@chart.val_axis.is_a?(Axlsx::ValAxis), "value access not created")
21
21
  end
22
22
 
23
23
  def test_bar_direction
24
- assert_raise(ArgumentError, "require valid bar direction") { @chart.barDir = :left }
25
- assert_nothing_raised("allow valid bar direction") { @chart.barDir = :col }
26
- assert(@chart.barDir == :col)
24
+ assert_raise(ArgumentError, "require valid bar direction") { @chart.bar_dir = :left }
25
+ assert_nothing_raised("allow valid bar direction") { @chart.bar_dir = :col }
26
+ assert(@chart.bar_dir == :col)
27
27
  end
28
28
 
29
29
  def test_grouping
@@ -34,15 +34,15 @@ class TestBar3DChart < Test::Unit::TestCase
34
34
 
35
35
 
36
36
  def test_gapWidth
37
- assert_raise(ArgumentError, "require valid gap width") { @chart.gapWidth = 200 }
38
- assert_nothing_raised("allow valid gapWidth") { @chart.gapWidth = "200%" }
39
- assert(@chart.gapWidth == "200%")
37
+ assert_raise(ArgumentError, "require valid gap width") { @chart.gap_width = 200 }
38
+ assert_nothing_raised("allow valid gapWidth") { @chart.gap_width = "200%" }
39
+ assert(@chart.gap_width == "200%")
40
40
  end
41
41
 
42
42
  def test_gapDepth
43
- assert_raise(ArgumentError, "require valid gapDepth") { @chart.gapDepth = 200 }
44
- assert_nothing_raised("allow valid gapDepth") { @chart.gapDepth = "200%" }
45
- assert(@chart.gapDepth == "200%")
43
+ assert_raise(ArgumentError, "require valid gap_depth") { @chart.gap_depth = 200 }
44
+ assert_nothing_raised("allow valid gap_depth") { @chart.gap_depth = "200%" }
45
+ assert(@chart.gap_depth == "200%")
46
46
  end
47
47
 
48
48
  def test_shape
@@ -33,6 +33,5 @@ class TestBarSeries < Test::Unit::TestCase
33
33
  assert_equal(doc.xpath("//c:dPt/c:idx[@val='#{index}']").size,1)
34
34
  assert_equal(doc.xpath("//c:dPt/c:spPr/a:solidFill/a:srgbClr[@val='#{@series.colors[index]}']").size,1)
35
35
  end
36
- assert_equal(doc.xpath("//c:shape[@val='#{@series.shape.to_s}']").size, 1)
37
36
  end
38
37
  end
@@ -77,11 +77,7 @@ class TestChart < Test::Unit::TestCase
77
77
  def test_to_xml_string
78
78
  schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
79
79
  doc = Nokogiri::XML(@chart.to_xml_string)
80
- errors = []
81
- schema.validate(doc).each do |error|
82
- errors.push error
83
- puts error.message
84
- end
80
+ errors = schema.validate(doc).map { |error| puts error.message; error }
85
81
  assert(errors.empty?, "error free validation")
86
82
  end
87
83
 
@@ -13,19 +13,15 @@ class TestPie3DChart < Test::Unit::TestCase
13
13
  end
14
14
 
15
15
  def test_initialization
16
- assert_equal(@chart.view3D.rotX, 30, "view 3d default rotX incorrect")
17
- assert_equal(@chart.view3D.perspective, 30, "view 3d default perspective incorrect")
16
+ assert_equal(@chart.view_3D.rot_x, 30, "view 3d default rot_x incorrect")
17
+ assert_equal(@chart.view_3D.perspective, 30, "view_3d default perspective incorrect")
18
18
  assert_equal(@chart.series_type, Axlsx::PieSeries, "series type incorrect")
19
19
  end
20
20
 
21
21
  def test_to_xml
22
22
  schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
23
23
  doc = Nokogiri::XML(@chart.to_xml_string)
24
- errors = []
25
- schema.validate(doc).each do |error|
26
- errors.push error
27
- puts error.message
28
- end
24
+ errors = schema.validate(doc).map {|error| puts error.message; error }
29
25
  assert(errors.empty?, "error free validation")
30
26
  end
31
27
 
@@ -9,33 +9,33 @@ class TestView3D < Test::Unit::TestCase
9
9
  end
10
10
 
11
11
  def test_options
12
- v = Axlsx::View3D.new :rotX => 10, :rotY => 5, :hPercent => "30%", :depthPercent => "45%", :rAngAx => false, :perspective => 10
13
- assert_equal(v.rotX, 10)
14
- assert_equal(v.rotY, 5)
15
- assert_equal(v.hPercent, "30%")
16
- assert_equal(v.depthPercent, "45%")
17
- assert_equal(v.rAngAx, false)
12
+ v = Axlsx::View3D.new :rot_x => 10, :rot_y => 5, :h_percent => "30%", :depth_percent => "45%", :r_ang_ax => false, :perspective => 10
13
+ assert_equal(v.rot_x, 10)
14
+ assert_equal(v.rot_y, 5)
15
+ assert_equal(v.h_percent, "30%")
16
+ assert_equal(v.depth_percent, "45%")
17
+ assert_equal(v.r_ang_ax, false)
18
18
  assert_equal(v.perspective, 10)
19
19
  end
20
20
 
21
- def test_rotX
22
- assert_raise(ArgumentError) {@view.rotX = "bob"}
23
- assert_nothing_raised {@view.rotX = -90}
21
+ def test_rot_x
22
+ assert_raise(ArgumentError) {@view.rot_x = "bob"}
23
+ assert_nothing_raised {@view.rot_x = -90}
24
24
  end
25
25
 
26
- def test_rotY
27
- assert_raise(ArgumentError) {@view.rotY = "bob"}
28
- assert_nothing_raised {@view.rotY = 90}
26
+ def test_rot_y
27
+ assert_raise(ArgumentError) {@view.rot_y = "bob"}
28
+ assert_nothing_raised {@view.rot_y = 90}
29
29
  end
30
30
 
31
- def test_hPercent
32
- assert_raise(ArgumentError) {@view.hPercent = "bob"}
33
- assert_nothing_raised {@view.hPercent = "500%"}
31
+ def test_h_percent
32
+ assert_raise(ArgumentError) {@view.h_percent = "bob"}
33
+ assert_nothing_raised {@view.h_percent = "500%"}
34
34
  end
35
35
 
36
- def test_depthPercent
37
- assert_raise(ArgumentError) {@view.depthPercent = "bob"}
38
- assert_nothing_raised {@view.depthPercent = "20%"}
36
+ def test_depth_percent
37
+ assert_raise(ArgumentError) {@view.depth_percent = "bob"}
38
+ assert_nothing_raised {@view.depth_percent = "20%"}
39
39
  end
40
40
 
41
41
 
@@ -7,6 +7,8 @@ class TestPackage < Test::Unit::TestCase
7
7
  ws = @package.workbook.add_worksheet
8
8
  ws.add_row ['Can', 'we', 'build it?']
9
9
  ws.add_row ['Yes!', 'We', 'can!']
10
+ ws.protect_range('A1:C1')
11
+ ws.protect_range(ws.rows.last.cells)
10
12
  ws.add_comment :author => 'alice', :text => 'Hi Bob', :ref => 'A12'
11
13
  ws.add_comment :author => 'bob', :text => 'Hi Alice', :ref => 'F19'
12
14
  ws.sheet_view do |vs|
@@ -54,6 +54,23 @@ class TestPageSetup < Test::Unit::TestCase
54
54
  assert_equal(nil, @ps.scale)
55
55
  end
56
56
 
57
+ def test_default_fit_to_page?
58
+ assert(@ps.fit_to_width == nil && @ps.fit_to_height == nil)
59
+ assert(@ps.fit_to_page? == false)
60
+ end
61
+
62
+ def test_with_height_fit_to_page?
63
+ assert(@ps.fit_to_width == nil && @ps.fit_to_height == nil)
64
+ @ps.set(:fit_to_height => 1)
65
+ assert(@ps.fit_to_page?)
66
+ end
67
+
68
+ def test_with_width_fit_to_page?
69
+ assert(@ps.fit_to_width == nil && @ps.fit_to_height == nil)
70
+ @ps.set(:fit_to_width => 1)
71
+ assert(@ps.fit_to_page?)
72
+ end
73
+
57
74
  def test_to_xml_all_values
58
75
  @ps.set(:fit_to_height => 1, :fit_to_width => 2, :orientation => :landscape, :paper_height => "297mm", :paper_width => "210mm", :scale => 50)
59
76
  doc = Nokogiri::XML.parse(@ps.to_xml_string)
@@ -106,7 +123,7 @@ class TestPageSetup < Test::Unit::TestCase
106
123
  assert_nothing_raised { @ps.scale = 99 }
107
124
  assert_equal(99, @ps.scale)
108
125
  end
109
-
126
+
110
127
  def test_fit_to
111
128
  fits = @ps.fit_to(:width => 1)
112
129
  assert_equal([1, 9999], fits)
@@ -115,7 +132,7 @@ class TestPageSetup < Test::Unit::TestCase
115
132
  fits = @ps.fit_to :height => 7, :width => 2
116
133
  assert_equal(fits, [2, 7])
117
134
  assert_raise(ArgumentError) { puts @ps.fit_to(:width => true)}
118
-
119
-
135
+
136
+
120
137
  end
121
138
  end
@@ -0,0 +1,18 @@
1
+ # encoding: UTF-8
2
+ require 'tc_helper.rb'
3
+ class TestProtectedRange < Test::Unit::TestCase
4
+ def setup
5
+ @p = Axlsx::Package.new
6
+ @ws = @p.workbook.add_worksheet { |sheet| sheet.add_row [1,2,3,4,5,6,7,8,9] }
7
+ end
8
+
9
+ def test_initialize_options
10
+ assert_nothing_raised {Axlsx::ProtectedRange.new(:sqref => 'A1:B1', :name => "only bob")}
11
+ end
12
+
13
+ def test_range
14
+ assert_equal(0, @ws.protected_ranges.size)
15
+ r = @ws.protect_range('A1:B1')
16
+ assert_equal('A1:B1', r.sqref)
17
+ end
18
+ end
@@ -91,4 +91,4 @@ class TestSelection < Test::Unit::TestCase
91
91
  assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='I57'][@pane='bottomRight'][@activeCell='I57']").size)
92
92
  assert doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='I57'][@pane='bottomRight'][@activeCell='I57']")
93
93
  end
94
- end
94
+ end
@@ -14,6 +14,14 @@ class TestWorksheet < Test::Unit::TestCase
14
14
  assert_equal(ws.pn, "worksheets/sheet2.xml")
15
15
  end
16
16
 
17
+ def test_name_is_html_encoded
18
+ @ws.name = '<foo> & <bar>'
19
+ assert_equal(@ws.name, '&lt;foo&gt; &amp; &lt;bar&gt;')
20
+ end
21
+
22
+ def test_name_exception_on_colon
23
+ assert_raises(ArgumentError) { @ws.name = 'foo:bar' }
24
+ end
17
25
  def test_page_margins
18
26
  assert(@ws.page_margins.is_a? Axlsx::PageMargins)
19
27
  end
@@ -108,6 +116,11 @@ class TestWorksheet < Test::Unit::TestCase
108
116
  assert_equal @ws.dimension, "A1:C2"
109
117
  end
110
118
 
119
+ def test_dimension_with_empty_row
120
+ @ws.add_row
121
+ assert_equal "A1:AA200", @ws.dimension
122
+ end
123
+
111
124
  def test_referencing
112
125
  @ws.add_row [1, 2, 3]
113
126
  @ws.add_row [4, 5, 6]
@@ -201,8 +214,8 @@ class TestWorksheet < Test::Unit::TestCase
201
214
  end
202
215
 
203
216
  def test_fit_to_page_assignation_does_nothing
204
- @ws.fit_to_page = false
205
- assert_equal(@ws.fit_to_page, false)
217
+ @ws.fit_to_page = true
218
+ assert_equal(@ws.fit_to_page?, false)
206
219
  end
207
220
 
208
221
  def test_to_xml_string_selected
@@ -248,7 +261,7 @@ class TestWorksheet < Test::Unit::TestCase
248
261
  def test_to_xml_string_sheet_protection
249
262
  @ws.sheet_protection.password = 'fish'
250
263
  doc = Nokogiri::XML(@ws.to_xml_string)
251
- assert(doc.xpath('//sheetProtection'))
264
+ assert(doc.xpath('//xmlns:sheetProtection'))
252
265
  end
253
266
 
254
267
  def test_to_xml_string_page_margins
@@ -302,14 +315,15 @@ class TestWorksheet < Test::Unit::TestCase
302
315
  def test_to_xml_string
303
316
  schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
304
317
  doc = Nokogiri::XML(@ws.to_xml_string)
305
- errors = []
306
- schema.validate(doc).each do |error|
307
- errors.push error
308
- puts error.message
309
- end
310
- assert(errors.empty?, "error free validation")
318
+ assert(schema.validate(doc).map{ |e| puts e.message; e }.empty?, "error free validation")
311
319
  end
312
320
 
321
+ def test_to_xml_string_with_illegal_chars
322
+ nasties = "\v\u2028\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u001f"
323
+ @ws.add_row [nasties]
324
+ assert_equal(0, @ws.rows.last.cells.last.value.index("\v"))
325
+ assert_equal(nil,@ws.to_xml_string.index("\v"))
326
+ end
313
327
  # Make sure the XML for all optional elements (like pageMargins, autoFilter, ...)
314
328
  # is generated in correct order.
315
329
  def test_valid_with_optional_elements
@@ -322,13 +336,7 @@ class TestWorksheet < Test::Unit::TestCase
322
336
  @ws.add_table "E1:F3"
323
337
  schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
324
338
  doc = Nokogiri::XML(@ws.to_xml_string)
325
- errors = []
326
- schema.validate(doc).each do |error|
327
- errors.push error
328
- puts error.message
329
- end
330
- assert(errors.empty?, "error free validation")
331
-
339
+ assert(schema.validate(doc).map { |e| puts e.message; e }.empty?, schema.validate(doc).map { |e| e.message }.join('\n'))
332
340
  end
333
341
 
334
342
  def test_relationships
@@ -350,8 +358,8 @@ class TestWorksheet < Test::Unit::TestCase
350
358
  end
351
359
 
352
360
  def test_name_size
353
- assert_raise(ArgumentError, "name too long!") { @ws.name = Array.new(32, "A").join('') }
354
- assert_nothing_raised { @ws.name = Array.new(31, "A").join('') }
361
+ assert_raise(ArgumentError, "name too long!") { @ws.name = Array.new(32, "A").join() }
362
+ assert_nothing_raised { @ws.name = Array.new(31, "A").join() }
355
363
  end
356
364
 
357
365
  def test_set_fixed_width_column
@@ -374,6 +382,19 @@ class TestWorksheet < Test::Unit::TestCase
374
382
  assert_raise(ArgumentError, 'only accept Integer, Float or Fixnum') { @ws.column_widths 2, 7, "-1" }
375
383
  end
376
384
 
385
+ def test_protect_range
386
+ assert(@ws.protected_ranges.is_a?(Axlsx::SimpleTypedList))
387
+ assert_equal(0, @ws.protected_ranges.size)
388
+ @ws.protect_range('A1:A3')
389
+ assert_equal('A1:A3', @ws.protected_ranges.last.sqref)
390
+ end
391
+
392
+ def test_protect_range_with_cells
393
+ @ws.add_row [1, 2, 3]
394
+ assert_nothing_raised {@ws.protect_range(@ws.rows.first.cells) }
395
+ assert_equal('A1:C1', @ws.protected_ranges.last.sqref)
396
+
397
+ end
377
398
  def test_merge_cells
378
399
  assert(@ws.merged_cells.is_a?(Array))
379
400
  assert_equal(@ws.merged_cells.size, 0)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: axlsx
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.7
4
+ version: 1.1.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-11 00:00:00.000000000 Z
12
+ date: 2012-07-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &2151816940 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 1.4.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2151816940
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.4.1
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rubyzip
27
- requirement: &2151815700 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,31 @@ dependencies:
32
37
  version: 0.9.5
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *2151815700
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.9.5
46
+ - !ruby/object:Gem::Dependency
47
+ name: htmlentities
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 4.3.1
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 4.3.1
36
62
  - !ruby/object:Gem::Dependency
37
63
  name: rake
38
- requirement: &2151814440 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
39
65
  none: false
40
66
  requirements:
41
67
  - - ! '>='
@@ -43,10 +69,15 @@ dependencies:
43
69
  version: 0.8.7
44
70
  type: :runtime
45
71
  prerelease: false
46
- version_requirements: *2151814440
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 0.8.7
47
78
  - !ruby/object:Gem::Dependency
48
79
  name: cover_me
49
- requirement: &2151813500 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
50
81
  none: false
51
82
  requirements:
52
83
  - - ! '>='
@@ -54,7 +85,12 @@ dependencies:
54
85
  version: '0'
55
86
  type: :development
56
87
  prerelease: false
57
- version_requirements: *2151813500
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
58
94
  description: ! ' xlsx generation with charts, images, automated column width, customizable
59
95
  styles and full schema validation. Axlsx excels at helping you generate beautiful
60
96
  Office Open XML Spreadsheet documents without having to understand the entire ECMA
@@ -74,34 +110,25 @@ files:
74
110
  - lib/axlsx/doc_props/app.rb
75
111
  - lib/axlsx/doc_props/core.rb
76
112
  - lib/axlsx/drawing/ax_data_source.rb
77
- - lib/axlsx/drawing/ax_data_source.rb~
78
113
  - lib/axlsx/drawing/axis.rb
79
114
  - lib/axlsx/drawing/bar_3D_chart.rb
80
115
  - lib/axlsx/drawing/bar_series.rb
81
116
  - lib/axlsx/drawing/cat_axis.rb
82
117
  - lib/axlsx/drawing/chart.rb
83
- - lib/axlsx/drawing/data_source.rb~
84
118
  - lib/axlsx/drawing/drawing.rb
85
119
  - lib/axlsx/drawing/graphic_frame.rb
86
- - lib/axlsx/drawing/hlink_click.rb~
87
120
  - lib/axlsx/drawing/hyperlink.rb
88
- - lib/axlsx/drawing/hyperlink.rb~
89
121
  - lib/axlsx/drawing/line_3D_chart.rb
90
122
  - lib/axlsx/drawing/line_series.rb
91
123
  - lib/axlsx/drawing/marker.rb
92
124
  - lib/axlsx/drawing/num_data.rb
93
- - lib/axlsx/drawing/num_data.rb~
94
125
  - lib/axlsx/drawing/num_data_source.rb
95
- - lib/axlsx/drawing/num_data_source.rb~
96
126
  - lib/axlsx/drawing/num_val.rb
97
- - lib/axlsx/drawing/num_val.rb~
98
127
  - lib/axlsx/drawing/one_cell_anchor.rb
99
128
  - lib/axlsx/drawing/pic.rb
100
129
  - lib/axlsx/drawing/picture_locking.rb
101
- - lib/axlsx/drawing/picture_locking.rb~
102
130
  - lib/axlsx/drawing/pie_3D_chart.rb
103
131
  - lib/axlsx/drawing/pie_series.rb
104
- - lib/axlsx/drawing/ref.rb~
105
132
  - lib/axlsx/drawing/scaling.rb
106
133
  - lib/axlsx/drawing/scatter_chart.rb
107
134
  - lib/axlsx/drawing/scatter_series.rb
@@ -109,17 +136,13 @@ files:
109
136
  - lib/axlsx/drawing/series.rb
110
137
  - lib/axlsx/drawing/series_title.rb
111
138
  - lib/axlsx/drawing/str_data.rb
112
- - lib/axlsx/drawing/str_data.rb~
113
139
  - lib/axlsx/drawing/str_val.rb
114
- - lib/axlsx/drawing/str_val.rb~
115
140
  - lib/axlsx/drawing/title.rb
116
141
  - lib/axlsx/drawing/two_cell_anchor.rb
117
142
  - lib/axlsx/drawing/val_axis.rb
118
143
  - lib/axlsx/drawing/view_3D.rb
119
144
  - lib/axlsx/drawing/vml_drawing.rb
120
- - lib/axlsx/drawing/vml_drawing.rb~
121
145
  - lib/axlsx/drawing/vml_shape.rb
122
- - lib/axlsx/drawing/vml_shape.rb~
123
146
  - lib/axlsx/package.rb
124
147
  - lib/axlsx/rels/relationship.rb
125
148
  - lib/axlsx/rels/relationships.rb
@@ -141,60 +164,41 @@ files:
141
164
  - lib/axlsx/stylesheet/table_style_element.rb
142
165
  - lib/axlsx/stylesheet/table_styles.rb
143
166
  - lib/axlsx/stylesheet/xf.rb
144
- - lib/axlsx/util/cbf.rb
145
- - lib/axlsx/util/cfb.rb~
146
167
  - lib/axlsx/util/constants.rb
147
- - lib/axlsx/util/font_tables.rb~
148
- - lib/axlsx/util/ms_off_crypto.rb
149
- - lib/axlsx/util/ms_off_crypto.rb~
150
- - lib/axlsx/util/ms_offcrypto.rb~
151
168
  - lib/axlsx/util/parser.rb
152
- - lib/axlsx/util/parser.rb~
153
169
  - lib/axlsx/util/simple_typed_list.rb
154
170
  - lib/axlsx/util/storage.rb
155
- - lib/axlsx/util/storage.rb~
156
171
  - lib/axlsx/util/validators.rb
157
172
  - lib/axlsx/version.rb
158
173
  - lib/axlsx/workbook/shared_strings_table.rb
159
- - lib/axlsx/workbook/shared_strings_table.rb~
160
174
  - lib/axlsx/workbook/workbook.rb
161
175
  - lib/axlsx/workbook/worksheet/cell.rb
162
176
  - lib/axlsx/workbook/worksheet/cfvo.rb
163
- - lib/axlsx/workbook/worksheet/cfvo.rb~
164
177
  - lib/axlsx/workbook/worksheet/col.rb
165
- - lib/axlsx/workbook/worksheet/col.rb~
166
178
  - lib/axlsx/workbook/worksheet/color_scale.rb
167
- - lib/axlsx/workbook/worksheet/color_scale.rb~
168
179
  - lib/axlsx/workbook/worksheet/comment.rb
169
- - lib/axlsx/workbook/worksheet/comment.rb~
170
180
  - lib/axlsx/workbook/worksheet/comments.rb
171
- - lib/axlsx/workbook/worksheet/comments.rb~
172
181
  - lib/axlsx/workbook/worksheet/conditional_formatting.rb
173
182
  - lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb
174
183
  - lib/axlsx/workbook/worksheet/data_bar.rb
175
- - lib/axlsx/workbook/worksheet/data_bar.rb~
176
184
  - lib/axlsx/workbook/worksheet/data_validation.rb
177
185
  - lib/axlsx/workbook/worksheet/date_time_converter.rb
178
186
  - lib/axlsx/workbook/worksheet/icon_set.rb
179
- - lib/axlsx/workbook/worksheet/icon_set.rb~
180
187
  - lib/axlsx/workbook/worksheet/page_margins.rb
181
188
  - lib/axlsx/workbook/worksheet/page_setup.rb
182
189
  - lib/axlsx/workbook/worksheet/pane.rb
183
190
  - lib/axlsx/workbook/worksheet/print_options.rb
191
+ - lib/axlsx/workbook/worksheet/protected_range.rb
184
192
  - lib/axlsx/workbook/worksheet/row.rb
185
193
  - lib/axlsx/workbook/worksheet/selection.rb
186
- - lib/axlsx/workbook/worksheet/shared_strings_table.rb~
187
194
  - lib/axlsx/workbook/worksheet/sheet_protection.rb
188
195
  - lib/axlsx/workbook/worksheet/sheet_view.rb
189
196
  - lib/axlsx/workbook/worksheet/table.rb
190
- - lib/axlsx/workbook/worksheet/table.rb~
191
197
  - lib/axlsx/workbook/worksheet/worksheet.rb
192
198
  - lib/axlsx.rb
193
199
  - lib/schema/dc.xsd
194
- - lib/schema/dc.xsd~
195
200
  - lib/schema/dcmitype.xsd
196
201
  - lib/schema/dcterms.xsd
197
- - lib/schema/dcterms.xsd~
198
202
  - lib/schema/dml-chart.xsd
199
203
  - lib/schema/dml-chartDrawing.xsd
200
204
  - lib/schema/dml-compatibility.xsd
@@ -206,7 +210,6 @@ files:
206
210
  - lib/schema/dml-wordprocessingDrawing.xsd
207
211
  - lib/schema/opc-contentTypes.xsd
208
212
  - lib/schema/opc-coreProperties.xsd
209
- - lib/schema/opc-coreProperties.xsd~
210
213
  - lib/schema/opc-digSig.xsd
211
214
  - lib/schema/opc-relationships.xsd
212
215
  - lib/schema/pml.xsd
@@ -228,58 +231,26 @@ files:
228
231
  - lib/schema/vml-wordprocessingDrawing.xsd
229
232
  - lib/schema/wml.xsd
230
233
  - lib/schema/xml.xsd
231
- - examples/axis-titles.xlsx
232
234
  - examples/basic_charts.rb
233
- - examples/basic_charts.xlsx
234
235
  - examples/chart_colors.rb
235
- - examples/chart_colors.xlsx
236
- - examples/charts.xlsx
237
236
  - examples/conditional_formatting/example_conditional_formatting.rb
238
237
  - examples/conditional_formatting/getting_barred.rb
239
- - examples/conditional_formatting/getting_barred.xlsx
240
238
  - examples/conditional_formatting/hitting_the_high_notes.rb
241
239
  - examples/conditional_formatting/scaled_colors.rb
242
240
  - examples/conditional_formatting/stop_and_go.rb
243
241
  - examples/data_validation.rb
244
- - examples/doc/_index.html
245
- - examples/doc/class_list.html
246
- - examples/doc/css/common.css
247
- - examples/doc/css/full_list.css
248
- - examples/doc/css/style.css
249
- - examples/doc/file_list.html
250
- - examples/doc/frames.html
251
- - examples/doc/index.html
252
- - examples/doc/js/app.js
253
- - examples/doc/js/full_list.js
254
- - examples/doc/js/jquery.js
255
- - examples/doc/method_list.html
256
- - examples/doc/top-level-namespace.html
257
242
  - examples/example.rb
258
- - examples/example.xlsx
259
- - examples/example_streamed.xlsx
260
- - examples/examples_saved.xlsx
243
+ - examples/extractive.pdf
261
244
  - examples/extractive.rb
262
- - examples/extractive.xlsx
263
- - examples/fish.xlsx
264
245
  - examples/image1.gif
265
246
  - examples/image1.jpeg
266
247
  - examples/image1.jpg
267
248
  - examples/image1.png
268
- - examples/no-use_autowidth.xlsx
269
- - examples/pareto.rb
270
- - examples/pareto.xlsx
271
- - examples/pie_chart_excel.xlsx
272
- - examples/pie_chart_saved.xlsx
273
249
  - examples/sample.png
274
- - examples/shared_strings_example.xlsx
275
250
  - examples/sheet_protection.rb
276
- - examples/sheet_protection.xlsx
277
251
  - examples/sheet_view.rb
278
- - examples/sheet_view.xlsx
279
252
  - examples/skydrive/real_example.rb
280
253
  - examples/two_cell_anchor_image.rb
281
- - examples/two_cell_anchor_image.xlsx
282
- - examples/~$example.xlsx
283
254
  - LICENSE
284
255
  - README.md
285
256
  - Rakefile
@@ -298,7 +269,6 @@ files:
298
269
  - test/drawing/tc_cat_axis_data.rb
299
270
  - test/drawing/tc_chart.rb
300
271
  - test/drawing/tc_data_source.rb
301
- - test/drawing/tc_data_source.rb~
302
272
  - test/drawing/tc_drawing.rb
303
273
  - test/drawing/tc_graphic_frame.rb
304
274
  - test/drawing/tc_hyperlink.rb
@@ -307,9 +277,7 @@ files:
307
277
  - test/drawing/tc_marker.rb
308
278
  - test/drawing/tc_named_axis_data.rb
309
279
  - test/drawing/tc_num_data.rb
310
- - test/drawing/tc_num_data.rb~
311
280
  - test/drawing/tc_num_val.rb
312
- - test/drawing/tc_num_val.rb~
313
281
  - test/drawing/tc_one_cell_anchor.rb
314
282
  - test/drawing/tc_pic.rb
315
283
  - test/drawing/tc_picture_locking.rb
@@ -322,15 +290,12 @@ files:
322
290
  - test/drawing/tc_series.rb
323
291
  - test/drawing/tc_series_title.rb
324
292
  - test/drawing/tc_str_data.rb
325
- - test/drawing/tc_str_data.rb~
326
293
  - test/drawing/tc_str_val.rb
327
- - test/drawing/tc_str_val.rb~
328
294
  - test/drawing/tc_title.rb
329
295
  - test/drawing/tc_two_cell_anchor.rb
330
296
  - test/drawing/tc_val_axis.rb
331
297
  - test/drawing/tc_view_3D.rb
332
298
  - test/drawing/tc_vml_drawing.rb
333
- - test/drawing/tc_vml_drawing.rb~
334
299
  - test/drawing/tc_vml_shape.rb
335
300
  - test/profile.rb
336
301
  - test/rels/tc_relationship.rb
@@ -361,27 +326,22 @@ files:
361
326
  - test/workbook/tc_shared_strings_table.rb
362
327
  - test/workbook/tc_workbook.rb
363
328
  - test/workbook/worksheet/table/tc_table.rb
364
- - test/workbook/worksheet/table/tc_table.rb~
365
329
  - test/workbook/worksheet/tc_cell.rb
366
330
  - test/workbook/worksheet/tc_cfvo.rb
367
- - test/workbook/worksheet/tc_cfvo.rb~
368
331
  - test/workbook/worksheet/tc_col.rb
369
- - test/workbook/worksheet/tc_col.rb~
370
332
  - test/workbook/worksheet/tc_color_scale.rb
371
- - test/workbook/worksheet/tc_color_scale.rb~
372
333
  - test/workbook/worksheet/tc_comment.rb
373
334
  - test/workbook/worksheet/tc_comments.rb
374
335
  - test/workbook/worksheet/tc_conditional_formatting.rb
375
336
  - test/workbook/worksheet/tc_data_bar.rb
376
- - test/workbook/worksheet/tc_data_bar.rb~
377
337
  - test/workbook/worksheet/tc_data_validation.rb
378
338
  - test/workbook/worksheet/tc_date_time_converter.rb
379
339
  - test/workbook/worksheet/tc_icon_set.rb
380
- - test/workbook/worksheet/tc_icon_set.rb~
381
340
  - test/workbook/worksheet/tc_page_margins.rb
382
341
  - test/workbook/worksheet/tc_page_setup.rb
383
342
  - test/workbook/worksheet/tc_pane.rb
384
343
  - test/workbook/worksheet/tc_print_options.rb
344
+ - test/workbook/worksheet/tc_protected_range.rb
385
345
  - test/workbook/worksheet/tc_row.rb
386
346
  - test/workbook/worksheet/tc_selection.rb
387
347
  - test/workbook/worksheet/tc_sheet_protection.rb
@@ -405,9 +365,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
405
365
  - - ! '>='
406
366
  - !ruby/object:Gem::Version
407
367
  version: '0'
368
+ segments:
369
+ - 0
370
+ hash: -13242224990218359
408
371
  requirements: []
409
372
  rubyforge_project:
410
- rubygems_version: 1.8.15
373
+ rubygems_version: 1.8.24
411
374
  signing_key:
412
375
  specification_version: 3
413
376
  summary: excel OOXML (xlsx) with charts, styles, images and autowidth columns.
@@ -425,7 +388,6 @@ test_files:
425
388
  - test/drawing/tc_cat_axis_data.rb
426
389
  - test/drawing/tc_chart.rb
427
390
  - test/drawing/tc_data_source.rb
428
- - test/drawing/tc_data_source.rb~
429
391
  - test/drawing/tc_drawing.rb
430
392
  - test/drawing/tc_graphic_frame.rb
431
393
  - test/drawing/tc_hyperlink.rb
@@ -434,9 +396,7 @@ test_files:
434
396
  - test/drawing/tc_marker.rb
435
397
  - test/drawing/tc_named_axis_data.rb
436
398
  - test/drawing/tc_num_data.rb
437
- - test/drawing/tc_num_data.rb~
438
399
  - test/drawing/tc_num_val.rb
439
- - test/drawing/tc_num_val.rb~
440
400
  - test/drawing/tc_one_cell_anchor.rb
441
401
  - test/drawing/tc_pic.rb
442
402
  - test/drawing/tc_picture_locking.rb
@@ -449,15 +409,12 @@ test_files:
449
409
  - test/drawing/tc_series.rb
450
410
  - test/drawing/tc_series_title.rb
451
411
  - test/drawing/tc_str_data.rb
452
- - test/drawing/tc_str_data.rb~
453
412
  - test/drawing/tc_str_val.rb
454
- - test/drawing/tc_str_val.rb~
455
413
  - test/drawing/tc_title.rb
456
414
  - test/drawing/tc_two_cell_anchor.rb
457
415
  - test/drawing/tc_val_axis.rb
458
416
  - test/drawing/tc_view_3D.rb
459
417
  - test/drawing/tc_vml_drawing.rb
460
- - test/drawing/tc_vml_drawing.rb~
461
418
  - test/drawing/tc_vml_shape.rb
462
419
  - test/profile.rb
463
420
  - test/rels/tc_relationship.rb
@@ -488,30 +445,24 @@ test_files:
488
445
  - test/workbook/tc_shared_strings_table.rb
489
446
  - test/workbook/tc_workbook.rb
490
447
  - test/workbook/worksheet/table/tc_table.rb
491
- - test/workbook/worksheet/table/tc_table.rb~
492
448
  - test/workbook/worksheet/tc_cell.rb
493
449
  - test/workbook/worksheet/tc_cfvo.rb
494
- - test/workbook/worksheet/tc_cfvo.rb~
495
450
  - test/workbook/worksheet/tc_col.rb
496
- - test/workbook/worksheet/tc_col.rb~
497
451
  - test/workbook/worksheet/tc_color_scale.rb
498
- - test/workbook/worksheet/tc_color_scale.rb~
499
452
  - test/workbook/worksheet/tc_comment.rb
500
453
  - test/workbook/worksheet/tc_comments.rb
501
454
  - test/workbook/worksheet/tc_conditional_formatting.rb
502
455
  - test/workbook/worksheet/tc_data_bar.rb
503
- - test/workbook/worksheet/tc_data_bar.rb~
504
456
  - test/workbook/worksheet/tc_data_validation.rb
505
457
  - test/workbook/worksheet/tc_date_time_converter.rb
506
458
  - test/workbook/worksheet/tc_icon_set.rb
507
- - test/workbook/worksheet/tc_icon_set.rb~
508
459
  - test/workbook/worksheet/tc_page_margins.rb
509
460
  - test/workbook/worksheet/tc_page_setup.rb
510
461
  - test/workbook/worksheet/tc_pane.rb
511
462
  - test/workbook/worksheet/tc_print_options.rb
463
+ - test/workbook/worksheet/tc_protected_range.rb
512
464
  - test/workbook/worksheet/tc_row.rb
513
465
  - test/workbook/worksheet/tc_selection.rb
514
466
  - test/workbook/worksheet/tc_sheet_protection.rb
515
467
  - test/workbook/worksheet/tc_sheet_view.rb
516
468
  - test/workbook/worksheet/tc_worksheet.rb
517
- has_rdoc: axlsx