axlsx 2.0.1 → 3.0.0.pre

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 (180) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +23 -23
  4. data/Rakefile +9 -11
  5. data/examples/auto_filter.rb +10 -1
  6. data/examples/conditional_formatting/example_conditional_formatting.rb +18 -3
  7. data/examples/example.rb +102 -4
  8. data/examples/merge_cells.rb +17 -0
  9. data/examples/no_grid_with_borders.rb +18 -0
  10. data/examples/pivot_test.rb +63 -0
  11. data/examples/split.rb +16 -0
  12. data/lib/axlsx/content_type/abstract_content_type.rb +1 -1
  13. data/lib/axlsx/content_type/content_type.rb +1 -1
  14. data/lib/axlsx/doc_props/app.rb +1 -1
  15. data/lib/axlsx/doc_props/core.rb +5 -5
  16. data/lib/axlsx/drawing/area_chart.rb +99 -0
  17. data/lib/axlsx/drawing/area_series.rb +110 -0
  18. data/lib/axlsx/drawing/axes.rb +1 -1
  19. data/lib/axlsx/drawing/axis.rb +12 -9
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +13 -13
  21. data/lib/axlsx/drawing/bar_chart.rb +143 -0
  22. data/lib/axlsx/drawing/bar_series.rb +9 -9
  23. data/lib/axlsx/drawing/bubble_chart.rb +59 -0
  24. data/lib/axlsx/drawing/bubble_series.rb +63 -0
  25. data/lib/axlsx/drawing/cat_axis.rb +5 -5
  26. data/lib/axlsx/drawing/chart.rb +52 -8
  27. data/lib/axlsx/drawing/d_lbls.rb +3 -3
  28. data/lib/axlsx/drawing/drawing.rb +6 -1
  29. data/lib/axlsx/drawing/graphic_frame.rb +3 -3
  30. data/lib/axlsx/drawing/hyperlink.rb +1 -3
  31. data/lib/axlsx/drawing/line_3D_chart.rb +2 -2
  32. data/lib/axlsx/drawing/line_chart.rb +10 -10
  33. data/lib/axlsx/drawing/line_series.rb +32 -3
  34. data/lib/axlsx/drawing/marker.rb +1 -1
  35. data/lib/axlsx/drawing/num_data.rb +4 -4
  36. data/lib/axlsx/drawing/num_data_source.rb +6 -6
  37. data/lib/axlsx/drawing/num_val.rb +3 -1
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +3 -2
  39. data/lib/axlsx/drawing/pic.rb +25 -19
  40. data/lib/axlsx/drawing/picture_locking.rb +1 -3
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +5 -6
  42. data/lib/axlsx/drawing/pie_series.rb +6 -6
  43. data/lib/axlsx/drawing/scaling.rb +6 -6
  44. data/lib/axlsx/drawing/scatter_chart.rb +10 -10
  45. data/lib/axlsx/drawing/scatter_series.rb +40 -7
  46. data/lib/axlsx/drawing/ser_axis.rb +2 -2
  47. data/lib/axlsx/drawing/series.rb +3 -3
  48. data/lib/axlsx/drawing/series_title.rb +2 -2
  49. data/lib/axlsx/drawing/str_data.rb +3 -3
  50. data/lib/axlsx/drawing/str_val.rb +3 -1
  51. data/lib/axlsx/drawing/title.rb +22 -4
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +6 -1
  53. data/lib/axlsx/drawing/val_axis.rb +1 -1
  54. data/lib/axlsx/drawing/view_3D.rb +2 -2
  55. data/lib/axlsx/drawing/vml_drawing.rb +1 -1
  56. data/lib/axlsx/package.rb +34 -32
  57. data/lib/axlsx/rels/relationship.rb +1 -1
  58. data/lib/axlsx/rels/relationships.rb +7 -4
  59. data/lib/axlsx/stylesheet/border_pr.rb +2 -2
  60. data/lib/axlsx/stylesheet/cell_alignment.rb +1 -3
  61. data/lib/axlsx/stylesheet/cell_protection.rb +1 -3
  62. data/lib/axlsx/stylesheet/cell_style.rb +1 -3
  63. data/lib/axlsx/stylesheet/color.rb +1 -3
  64. data/lib/axlsx/stylesheet/font.rb +1 -1
  65. data/lib/axlsx/stylesheet/gradient_stop.rb +1 -1
  66. data/lib/axlsx/stylesheet/num_fmt.rb +10 -3
  67. data/lib/axlsx/stylesheet/pattern_fill.rb +1 -1
  68. data/lib/axlsx/stylesheet/styles.rb +7 -7
  69. data/lib/axlsx/stylesheet/table_style_element.rb +1 -3
  70. data/lib/axlsx/util/accessors.rb +6 -6
  71. data/lib/axlsx/util/constants.rb +107 -99
  72. data/lib/axlsx/util/mime_type_utils.rb +11 -0
  73. data/lib/axlsx/util/options_parser.rb +2 -1
  74. data/lib/axlsx/util/parser.rb +4 -4
  75. data/lib/axlsx/util/serialized_attributes.rb +16 -6
  76. data/lib/axlsx/util/simple_typed_list.rb +28 -52
  77. data/lib/axlsx/util/storage.rb +4 -4
  78. data/lib/axlsx/util/validators.rb +29 -17
  79. data/lib/axlsx/version.rb +1 -1
  80. data/lib/axlsx/workbook/defined_name.rb +11 -12
  81. data/lib/axlsx/workbook/defined_names.rb +2 -2
  82. data/lib/axlsx/workbook/shared_strings_table.rb +5 -5
  83. data/lib/axlsx/workbook/workbook.rb +36 -11
  84. data/lib/axlsx/workbook/workbook_view.rb +80 -0
  85. data/lib/axlsx/workbook/workbook_views.rb +22 -0
  86. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +2 -2
  87. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +1 -3
  88. data/lib/axlsx/workbook/worksheet/break.rb +1 -3
  89. data/lib/axlsx/workbook/worksheet/cell.rb +136 -74
  90. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +63 -43
  91. data/lib/axlsx/workbook/worksheet/cfvo.rb +1 -3
  92. data/lib/axlsx/workbook/worksheet/cfvos.rb +4 -1
  93. data/lib/axlsx/workbook/worksheet/col.rb +7 -10
  94. data/lib/axlsx/workbook/worksheet/col_breaks.rb +2 -2
  95. data/lib/axlsx/workbook/worksheet/cols.rb +5 -2
  96. data/lib/axlsx/workbook/worksheet/comment.rb +5 -6
  97. data/lib/axlsx/workbook/worksheet/comments.rb +9 -12
  98. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +1 -1
  99. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +1 -1
  100. data/lib/axlsx/workbook/worksheet/data_bar.rb +4 -6
  101. data/lib/axlsx/workbook/worksheet/data_validation.rb +6 -4
  102. data/lib/axlsx/workbook/worksheet/dimension.rb +2 -2
  103. data/lib/axlsx/workbook/worksheet/header_footer.rb +6 -8
  104. data/lib/axlsx/workbook/worksheet/icon_set.rb +3 -5
  105. data/lib/axlsx/workbook/worksheet/merged_cells.rb +4 -2
  106. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -0
  107. data/lib/axlsx/workbook/worksheet/page_margins.rb +1 -3
  108. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +1 -1
  109. data/lib/axlsx/workbook/worksheet/page_setup.rb +21 -23
  110. data/lib/axlsx/workbook/worksheet/pane.rb +1 -3
  111. data/lib/axlsx/workbook/worksheet/pivot_table.rb +44 -28
  112. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +4 -4
  113. data/lib/axlsx/workbook/worksheet/print_options.rb +1 -3
  114. data/lib/axlsx/workbook/worksheet/protected_range.rb +1 -3
  115. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +5 -2
  116. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -0
  117. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -0
  118. data/lib/axlsx/workbook/worksheet/row.rb +40 -51
  119. data/lib/axlsx/workbook/worksheet/row_breaks.rb +2 -2
  120. data/lib/axlsx/workbook/worksheet/selection.rb +1 -3
  121. data/lib/axlsx/workbook/worksheet/sheet_data.rb +3 -1
  122. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +21 -3
  123. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +1 -3
  124. data/lib/axlsx/workbook/worksheet/table.rb +6 -6
  125. data/lib/axlsx/workbook/worksheet/table_style_info.rb +1 -3
  126. data/lib/axlsx/workbook/worksheet/tables.rb +4 -1
  127. data/lib/axlsx/workbook/worksheet/worksheet.rb +64 -78
  128. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +10 -10
  129. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +3 -3
  130. data/lib/axlsx.rb +34 -15
  131. data/test/drawing/tc_area_chart.rb +39 -0
  132. data/test/drawing/tc_area_series.rb +71 -0
  133. data/test/drawing/tc_axis.rb +27 -0
  134. data/test/drawing/tc_bar_chart.rb +71 -0
  135. data/test/drawing/tc_bubble_chart.rb +44 -0
  136. data/test/drawing/tc_bubble_series.rb +21 -0
  137. data/test/drawing/tc_chart.rb +23 -10
  138. data/test/drawing/tc_data_source.rb +6 -0
  139. data/test/drawing/tc_drawing.rb +2 -2
  140. data/test/drawing/tc_line_chart.rb +5 -5
  141. data/test/drawing/tc_line_series.rb +47 -6
  142. data/test/drawing/tc_pic.rb +11 -15
  143. data/test/drawing/tc_scatter_series.rb +36 -1
  144. data/test/drawing/tc_str_val.rb +9 -0
  145. data/test/drawing/tc_title.rb +5 -0
  146. data/test/stylesheet/tc_styles.rb +2 -2
  147. data/test/tc_axlsx.rb +31 -0
  148. data/test/tc_helper.rb +2 -0
  149. data/test/tc_package.rb +19 -1
  150. data/test/util/tc_mime_type_utils.rb +13 -0
  151. data/test/util/tc_simple_typed_list.rb +2 -3
  152. data/test/util/tc_validators.rb +34 -10
  153. data/test/workbook/tc_defined_name.rb +12 -4
  154. data/test/workbook/tc_shared_strings_table.rb +16 -1
  155. data/test/workbook/tc_workbook.rb +38 -3
  156. data/test/workbook/tc_workbook_view.rb +50 -0
  157. data/test/workbook/worksheet/auto_filter/tc_filters.rb +1 -1
  158. data/test/workbook/worksheet/tc_break.rb +1 -1
  159. data/test/workbook/worksheet/tc_cell.rb +76 -8
  160. data/test/workbook/worksheet/tc_col.rb +2 -2
  161. data/test/workbook/worksheet/tc_conditional_formatting.rb +2 -2
  162. data/test/workbook/worksheet/tc_data_bar.rb +1 -1
  163. data/test/workbook/worksheet/tc_data_validation.rb +11 -11
  164. data/test/workbook/worksheet/tc_header_footer.rb +2 -2
  165. data/test/workbook/worksheet/tc_icon_set.rb +1 -1
  166. data/test/workbook/worksheet/tc_outline_pr.rb +19 -0
  167. data/test/workbook/worksheet/tc_page_setup.rb +3 -3
  168. data/test/workbook/worksheet/tc_pivot_table.rb +21 -6
  169. data/test/workbook/worksheet/tc_print_options.rb +1 -1
  170. data/test/workbook/worksheet/tc_rich_text.rb +44 -0
  171. data/test/workbook/worksheet/tc_rich_text_run.rb +172 -0
  172. data/test/workbook/worksheet/tc_row.rb +7 -2
  173. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +1 -1
  174. data/test/workbook/worksheet/tc_sheet_format_pr.rb +4 -4
  175. data/test/workbook/worksheet/tc_sheet_pr.rb +26 -4
  176. data/test/workbook/worksheet/tc_sheet_protection.rb +5 -5
  177. data/test/workbook/worksheet/tc_sheet_view.rb +4 -4
  178. data/test/workbook/worksheet/tc_table.rb +2 -3
  179. data/test/workbook/worksheet/tc_worksheet.rb +99 -45
  180. metadata +142 -64
@@ -73,6 +73,15 @@ class TestWorksheet < Test::Unit::TestCase
73
73
  end
74
74
  end
75
75
 
76
+ def test_state
77
+ assert_equal(:visible, @ws.state)
78
+ end
79
+
80
+ def test_state_validation
81
+ assert_raise(ArgumentError) { @ws.state = :dead }
82
+ assert_nothing_raised { @ws.state = :very_hidden }
83
+ end
84
+
76
85
  def test_no_autowidth
77
86
  @ws.workbook.use_autowidth = false
78
87
  @ws.add_row [1,2,3,4]
@@ -84,7 +93,7 @@ class TestWorksheet < Test::Unit::TestCase
84
93
  page_setup = {:fit_to_height => 1, :fit_to_width => 1, :orientation => :landscape, :paper_width => "210mm", :paper_height => "297mm", :scale => 80}
85
94
  print_options = {:grid_lines => true, :headings => true, :horizontal_centered => true, :vertical_centered => true}
86
95
  header_footer = {:different_first => false, :different_odd_even => false, :odd_header => 'Header'}
87
- optioned = @ws.workbook.add_worksheet(:name => 'bob', :page_margins => page_margins, :page_setup => page_setup, :print_options => print_options, :header_footer => header_footer, :selected => true, :show_gridlines => false)
96
+ optioned = @ws.workbook.add_worksheet(:name => 'bob', :page_margins => page_margins, :page_setup => page_setup, :print_options => print_options, :header_footer => header_footer)
88
97
  page_margins.keys.each do |key|
89
98
  assert_equal(page_margins[key], optioned.page_margins.send(key))
90
99
  end
@@ -98,23 +107,21 @@ class TestWorksheet < Test::Unit::TestCase
98
107
  assert_equal(header_footer[key], optioned.header_footer.send(key))
99
108
  end
100
109
  assert_equal(optioned.name, 'bob')
101
- assert_equal(optioned.selected, true)
102
- assert_equal(optioned.show_gridlines, false)
103
110
 
104
111
  end
105
112
 
106
113
 
107
- def test_use_gridlines
108
- assert_raise(ArgumentError) { @ws.show_gridlines = -1.1 }
109
- assert_nothing_raised { @ws.show_gridlines = false }
110
- assert_equal(@ws.show_gridlines, false)
111
- end
114
+ # def test_use_gridlines
115
+ # assert_raise(ArgumentError) { @ws.show_gridlines = -1.1 }
116
+ # assert_nothing_raised { @ws.show_gridlines = false }
117
+ # assert_equal(@ws.show_gridlines, false)
118
+ # end
112
119
 
113
- def test_selected
114
- assert_raise(ArgumentError) { @ws.selected = -1.1 }
115
- assert_nothing_raised { @ws.selected = true }
116
- assert_equal(@ws.selected, true)
117
- end
120
+ # def test_selected
121
+ # assert_raise(ArgumentError) { @ws.selected = -1.1 }
122
+ # assert_nothing_raised { @ws.selected = true }
123
+ # assert_equal(@ws.selected, true)
124
+ # end
118
125
 
119
126
  def test_rels_pn
120
127
  assert_equal(@ws.rels_pn, "worksheets/_rels/sheet1.xml.rels")
@@ -257,11 +264,11 @@ class TestWorksheet < Test::Unit::TestCase
257
264
  end
258
265
  end
259
266
 
260
- def test_to_xml_string_fit_to_page
261
- @ws.page_setup.fit_to_width = 1
262
- doc = Nokogiri::XML(@ws.to_xml_string)
263
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:pageSetUpPr[@fitToPage="true"]').size, 1)
264
- end
267
+ # def test_to_xml_string_fit_to_page
268
+ # @ws.page_setup.fit_to_width = 1
269
+ # doc = Nokogiri::XML(@ws.to_xml_string)
270
+ # assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:pageSetUpPr[@fitToPage=1]').size, 1)
271
+ # end
265
272
 
266
273
  def test_to_xml_string_dimensions
267
274
  @ws.add_row [1,2,3]
@@ -269,22 +276,22 @@ class TestWorksheet < Test::Unit::TestCase
269
276
  assert_equal(doc.xpath('//xmlns:worksheet/xmlns:dimension[@ref="A1:C1"]').size, 1)
270
277
  end
271
278
 
272
- def test_fit_to_page_assignation_does_nothing
273
- @ws.fit_to_page = true
274
- assert_equal(@ws.fit_to_page?, false)
275
- end
279
+ # def test_fit_to_page_assignation_does_nothing
280
+ # @ws.fit_to_page = true
281
+ # assert_equal(@ws.fit_to_page?, false)
282
+ # end
276
283
 
277
- def test_to_xml_string_selected
278
- @ws.selected = true
279
- doc = Nokogiri::XML(@ws.to_xml_string)
280
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@tabSelected="true"]').size, 1)
281
- end
284
+ # def test_to_xml_string_selected
285
+ # @ws.selected = true
286
+ # doc = Nokogiri::XML(@ws.to_xml_string)
287
+ # assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@tabSelected=1]').size, 1)
288
+ # end
282
289
 
283
- def test_to_xml_string_show_gridlines
284
- @ws.show_gridlines = false
285
- doc = Nokogiri::XML(@ws.to_xml_string)
286
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@showGridLines="false"]').size, 1)
287
- end
290
+ # def test_to_xml_string_show_gridlines
291
+ # @ws.show_gridlines = false
292
+ # doc = Nokogiri::XML(@ws.to_xml_string)
293
+ # assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@showGridLines=0]').size, 1)
294
+ # end
288
295
 
289
296
  def test_to_xml_string_auto_fit_data
290
297
  @ws.add_row [1, "two"]
@@ -314,6 +321,13 @@ class TestWorksheet < Test::Unit::TestCase
314
321
  assert_equal(doc.xpath('//xmlns:worksheet/xmlns:mergeCells/xmlns:mergeCell[@ref="E1:F1"]').size, 1)
315
322
  end
316
323
 
324
+ def test_to_xml_string_merge_cells_row
325
+ row = @ws.add_row [1, "two"]
326
+ @ws.merge_cells row
327
+ doc = Nokogiri::XML(@ws.to_xml_string)
328
+ assert_equal(doc.xpath('//xmlns:worksheet/xmlns:mergeCells/xmlns:mergeCell[@ref="A1:B1"]').size, 1)
329
+ end
330
+
317
331
  def test_to_xml_string_row_breaks
318
332
  @ws.add_page_break("A1")
319
333
  doc = Nokogiri::XML(@ws.to_xml_string)
@@ -350,7 +364,7 @@ class TestWorksheet < Test::Unit::TestCase
350
364
  po.horizontal_centered = true
351
365
  end
352
366
  doc = Nokogiri::XML(@ws.to_xml_string)
353
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:printOptions[@gridLines="true"][@horizontalCentered="true"]').size, 1)
367
+ assert_equal(doc.xpath('//xmlns:worksheet/xmlns:printOptions[@gridLines=1][@horizontalCentered=1]').size, 1)
354
368
  end
355
369
 
356
370
  def test_to_xml_string_header_footer
@@ -360,7 +374,7 @@ class TestWorksheet < Test::Unit::TestCase
360
374
  hf.odd_header = 'Test Header'
361
375
  end
362
376
  doc = Nokogiri::XML(@ws.to_xml_string)
363
- assert_equal(doc.xpath('//xmlns:worksheet/xmlns:headerFooter[@differentFirst="false"][@differentOddEven="false"]').size, 1)
377
+ assert_equal(doc.xpath('//xmlns:worksheet/xmlns:headerFooter[@differentFirst=0][@differentOddEven=0]').size, 1)
364
378
  end
365
379
 
366
380
  def test_to_xml_string_drawing
@@ -389,10 +403,13 @@ class TestWorksheet < Test::Unit::TestCase
389
403
  end
390
404
 
391
405
  def test_to_xml_string_with_illegal_chars
406
+ old = Axlsx::trust_input
407
+ Axlsx::trust_input = false
392
408
  nasties = "\v\u2028\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u001f"
393
409
  @ws.add_row [nasties]
394
410
  assert_equal(0, @ws.rows.last.cells.last.value.index("\v"))
395
- assert_equal(nil,@ws.to_xml_string.index("\v"))
411
+ assert_equal(nil, @ws.to_xml_string.index("\v"))
412
+ Axlsx::trust_input = old
396
413
  end
397
414
 
398
415
  def test_to_xml_string_with_newlines
@@ -420,16 +437,16 @@ class TestWorksheet < Test::Unit::TestCase
420
437
  def test_relationships
421
438
  @ws.add_row [1,2,3]
422
439
  assert(@ws.relationships.empty?, "No Drawing relationship until you add a chart")
423
- c = @ws.add_chart Axlsx::Pie3DChart
440
+ @ws.add_chart Axlsx::Pie3DChart
424
441
  assert_equal(@ws.relationships.size, 1, "adding a chart creates the relationship")
425
- c = @ws.add_chart Axlsx::Pie3DChart
442
+ @ws.add_chart Axlsx::Pie3DChart
426
443
  assert_equal(@ws.relationships.size, 1, "multiple charts still only result in one relationship")
427
- c = @ws.add_comment :text => 'builder', :author => 'bob', :ref => @ws.rows.last.cells.last
428
- assert_equal(@ws.relationships.size, 4, "adding a comment adds 3 relationships")
429
- c = @ws.add_comment :text => 'not that is a comment!', :author => 'travis', :ref => "A1"
430
- assert_equal(@ws.relationships.size, 4, "adding multiple comments in the same worksheet should not add any additional comment relationships")
431
- c = @ws.add_pivot_table 'G5:G6', 'A1:D10'
432
- assert_equal(@ws.relationships.size, 5, "adding a pivot table adds 1 relationship")
444
+ @ws.add_comment :text => 'builder', :author => 'bob', :ref => @ws.rows.last.cells.last
445
+ assert_equal(@ws.relationships.size, 3, "adding a comment adds 2 relationships")
446
+ @ws.add_comment :text => 'not that is a comment!', :author => 'travis', :ref => "A1"
447
+ assert_equal(@ws.relationships.size, 3, "adding multiple comments in the same worksheet should not add any additional comment relationships")
448
+ @ws.add_pivot_table 'G5:G6', 'A1:D10'
449
+ assert_equal(@ws.relationships.size, 4, "adding a pivot table adds 1 relationship")
433
450
  end
434
451
 
435
452
 
@@ -464,7 +481,7 @@ class TestWorksheet < Test::Unit::TestCase
464
481
  @ws.column_widths nil, 0.5
465
482
  assert_equal(@ws.column_info[1].width, 0.5, 'eat my width')
466
483
  assert_raise(ArgumentError, 'only accept unsigned ints') { @ws.column_widths 2, 7, -1 }
467
- assert_raise(ArgumentError, 'only accept Integer, Float or Fixnum') { @ws.column_widths 2, 7, "-1" }
484
+ assert_raise(ArgumentError, 'only accept Integer or Float') { @ws.column_widths 2, 7, "-1" }
468
485
  end
469
486
 
470
487
  def test_protect_range
@@ -501,16 +518,43 @@ class TestWorksheet < Test::Unit::TestCase
501
518
 
502
519
  def test_auto_filter
503
520
  assert(@ws.auto_filter.range.nil?)
521
+ assert(@wb.defined_names.none?{|defined_name| defined_name.name=='_xlnm._FilterDatabase'})
504
522
  assert_raise(ArgumentError) { @ws.auto_filter = 123 }
505
523
  @ws.auto_filter.range = "A1:D9"
506
524
  assert_equal(@ws.auto_filter.range, "A1:D9")
525
+ @ws.to_xml_string
526
+ assert(@wb.defined_names.any?{|defined_name| defined_name.name=='_xlnm._FilterDatabase'})
527
+ end
528
+
529
+ def test_auto_filter_assign
530
+ other_ws = @wb.add_worksheet
531
+
532
+ assert(@ws.auto_filter.range.nil?)
533
+ assert(other_ws.auto_filter.range.nil?)
534
+ assert(@wb.defined_names.none?{|defined_name| defined_name.name=='_xlnm._FilterDatabase'})
535
+ assert_raise(ArgumentError) { @ws.auto_filter = 123 }
536
+
537
+ @ws.auto_filter = "A1:D9"
538
+ assert_equal(@ws.auto_filter.range, "A1:D9")
539
+
540
+ other_ws.auto_filter = "A1:D2"
541
+ assert_equal(other_ws.auto_filter.range, "A1:D2")
542
+
543
+ @ws.to_xml_string
544
+ other_ws.to_xml_string
545
+
546
+ filter_database = @wb.defined_names.select{|defined_name| defined_name.name=='_xlnm._FilterDatabase'}
547
+ assert_equal(2, filter_database.size)
548
+ assert_equal(@ws.index, filter_database[0].local_sheet_id)
549
+ assert_equal(other_ws.index, filter_database[1].local_sheet_id)
507
550
  end
508
551
 
552
+
509
553
  def test_sheet_pr_for_auto_filter
510
554
  @ws.auto_filter.range = 'A1:D9'
511
555
  @ws.auto_filter.add_column 0, :filters, :filter_items => [1]
512
556
  doc = Nokogiri::XML(@ws.to_xml_string)
513
- assert(doc.xpath('//sheetPr[@filterMode="true"]'))
557
+ assert(doc.xpath('//sheetPr[@filterMode=1]'))
514
558
  end
515
559
 
516
560
  def test_outline_level_rows
@@ -535,4 +579,14 @@ class TestWorksheet < Test::Unit::TestCase
535
579
  assert_equal(1, @wb.worksheets.size)
536
580
  end
537
581
 
582
+ def test_worksheet_only_includes_outline_pr_when_set
583
+ doc = Nokogiri::XML(@ws.to_xml_string)
584
+ assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr').size, 0)
585
+
586
+ @ws.sheet_pr.outline_pr.summary_below = false
587
+ @ws.sheet_pr.outline_pr.summary_right = true
588
+ doc = Nokogiri::XML(@ws.to_xml_string)
589
+ assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr').size, 1)
590
+ assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:outlinePr[@summaryBelow=0][@summaryRight=1]').size, 1)
591
+ end
538
592
  end
metadata CHANGED
@@ -1,117 +1,200 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: axlsx
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 3.0.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Randy Morgan
8
+ - Jurriaan Pruis
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-09-13 00:00:00.000000000 Z
12
+ date: 2018-02-14 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: nokogiri
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - '>='
18
+ - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: 1.4.1
20
+ version: '1.8'
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.8.2
20
24
  type: :runtime
21
25
  prerelease: false
22
26
  version_requirements: !ruby/object:Gem::Requirement
23
27
  requirements:
24
- - - '>='
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '1.8'
31
+ - - ">="
25
32
  - !ruby/object:Gem::Version
26
- version: 1.4.1
33
+ version: 1.8.2
27
34
  - !ruby/object:Gem::Dependency
28
35
  name: rubyzip
29
36
  requirement: !ruby/object:Gem::Requirement
30
37
  requirements:
31
- - - ~>
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.2'
41
+ - - ">="
32
42
  - !ruby/object:Gem::Version
33
- version: 1.0.0
43
+ version: 1.2.1
34
44
  type: :runtime
35
45
  prerelease: false
36
46
  version_requirements: !ruby/object:Gem::Requirement
37
47
  requirements:
38
- - - ~>
48
+ - - "~>"
39
49
  - !ruby/object:Gem::Version
40
- version: 1.0.0
50
+ version: '1.2'
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.2.1
41
54
  - !ruby/object:Gem::Dependency
42
55
  name: htmlentities
43
56
  requirement: !ruby/object:Gem::Requirement
44
57
  requirements:
45
- - - ~>
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '4.3'
61
+ - - ">="
46
62
  - !ruby/object:Gem::Version
47
- version: 4.3.1
63
+ version: 4.3.4
48
64
  type: :runtime
49
65
  prerelease: false
50
66
  version_requirements: !ruby/object:Gem::Requirement
51
67
  requirements:
52
- - - ~>
68
+ - - "~>"
53
69
  - !ruby/object:Gem::Version
54
- version: 4.3.1
70
+ version: '4.3'
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 4.3.4
74
+ - !ruby/object:Gem::Dependency
75
+ name: mimemagic
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '0.3'
81
+ type: :runtime
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '0.3'
55
88
  - !ruby/object:Gem::Dependency
56
89
  name: yard
57
90
  requirement: !ruby/object:Gem::Requirement
58
91
  requirements:
59
- - - '>='
92
+ - - "~>"
60
93
  - !ruby/object:Gem::Version
61
- version: '0'
94
+ version: 0.9.8
62
95
  type: :development
63
96
  prerelease: false
64
97
  version_requirements: !ruby/object:Gem::Requirement
65
98
  requirements:
66
- - - '>='
99
+ - - "~>"
67
100
  - !ruby/object:Gem::Version
68
- version: '0'
101
+ version: 0.9.8
69
102
  - !ruby/object:Gem::Dependency
70
103
  name: kramdown
71
104
  requirement: !ruby/object:Gem::Requirement
72
105
  requirements:
73
- - - '>='
106
+ - - "~>"
74
107
  - !ruby/object:Gem::Version
75
- version: '0'
108
+ version: '1.16'
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: 1.16.2
76
112
  type: :development
77
113
  prerelease: false
78
114
  version_requirements: !ruby/object:Gem::Requirement
79
115
  requirements:
80
- - - '>='
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '1.16'
119
+ - - ">="
81
120
  - !ruby/object:Gem::Version
82
- version: '0'
121
+ version: 1.16.2
83
122
  - !ruby/object:Gem::Dependency
84
123
  name: timecop
85
124
  requirement: !ruby/object:Gem::Requirement
86
125
  requirements:
87
- - - ~>
126
+ - - "~>"
88
127
  - !ruby/object:Gem::Version
89
- version: 0.6.1
128
+ version: 0.8.1
90
129
  type: :development
91
130
  prerelease: false
92
131
  version_requirements: !ruby/object:Gem::Requirement
93
132
  requirements:
94
- - - ~>
133
+ - - "~>"
95
134
  - !ruby/object:Gem::Version
96
- version: 0.6.1
97
- description: |2
98
- xlsx spreadsheet generation with charts, images, automated column width, customizable styles and full schema validation. Axlsx helps you create beautiful Office Open XML Spreadsheet documents ( Excel, Google Spreadsheets, Numbers, LibreOffice) without having to understand the entire ECMA specification. Check out the README for some examples of how easy it is. Best of all, you can validate your xlsx file before serialization so you know for sure that anything generated is going to load on your client's machine.
135
+ version: 0.8.1
136
+ description: " xlsx spreadsheet generation with charts, images, automated column
137
+ width, customizable styles and full schema validation. Axlsx helps you create beautiful
138
+ Office Open XML Spreadsheet documents ( Excel, Google Spreadsheets, Numbers, LibreOffice)
139
+ without having to understand the entire ECMA specification. Check out the README
140
+ for some examples of how easy it is. Best of all, you can validate your xlsx file
141
+ before serialization so you know for sure that anything generated is going to load
142
+ on your client's machine.\n"
99
143
  email: digital.ipseity@gmail.com
100
144
  executables: []
101
145
  extensions: []
102
146
  extra_rdoc_files: []
103
147
  files:
148
+ - ".yardopts"
149
+ - ".yardopts_guide"
150
+ - CHANGELOG.md
151
+ - LICENSE
152
+ - README.md
153
+ - Rakefile
154
+ - examples/2010_comments.rb
155
+ - examples/anchor_swapping.rb
156
+ - examples/auto_filter.rb
157
+ - examples/basic_charts.rb
158
+ - examples/chart_colors.rb
159
+ - examples/colored_links.rb
160
+ - examples/conditional_formatting/example_conditional_formatting.rb
161
+ - examples/conditional_formatting/getting_barred.rb
162
+ - examples/conditional_formatting/hitting_the_high_notes.rb
163
+ - examples/conditional_formatting/scaled_colors.rb
164
+ - examples/conditional_formatting/stop_and_go.rb
165
+ - examples/data_validation.rb
166
+ - examples/example.rb
167
+ - examples/extractive.rb
168
+ - examples/image1.jpeg
169
+ - examples/ios_preview.rb
170
+ - examples/merge_cells.rb
171
+ - examples/no_grid_with_borders.rb
172
+ - examples/page_setup.rb
173
+ - examples/pivot_table.rb
174
+ - examples/pivot_test.rb
175
+ - examples/sheet_protection.rb
176
+ - examples/skydrive/real_example.rb
177
+ - examples/split.rb
178
+ - examples/styles.rb
179
+ - examples/underline.rb
180
+ - examples/wrap_text.rb
181
+ - lib/axlsx.rb
104
182
  - lib/axlsx/content_type/abstract_content_type.rb
105
183
  - lib/axlsx/content_type/content_type.rb
106
184
  - lib/axlsx/content_type/default.rb
107
185
  - lib/axlsx/content_type/override.rb
108
186
  - lib/axlsx/doc_props/app.rb
109
187
  - lib/axlsx/doc_props/core.rb
188
+ - lib/axlsx/drawing/area_chart.rb
189
+ - lib/axlsx/drawing/area_series.rb
110
190
  - lib/axlsx/drawing/ax_data_source.rb
111
191
  - lib/axlsx/drawing/axes.rb
112
192
  - lib/axlsx/drawing/axis.rb
113
193
  - lib/axlsx/drawing/bar_3D_chart.rb
194
+ - lib/axlsx/drawing/bar_chart.rb
114
195
  - lib/axlsx/drawing/bar_series.rb
196
+ - lib/axlsx/drawing/bubble_chart.rb
197
+ - lib/axlsx/drawing/bubble_series.rb
115
198
  - lib/axlsx/drawing/cat_axis.rb
116
199
  - lib/axlsx/drawing/chart.rb
117
200
  - lib/axlsx/drawing/d_lbls.rb
@@ -167,6 +250,7 @@ files:
167
250
  - lib/axlsx/stylesheet/xf.rb
168
251
  - lib/axlsx/util/accessors.rb
169
252
  - lib/axlsx/util/constants.rb
253
+ - lib/axlsx/util/mime_type_utils.rb
170
254
  - lib/axlsx/util/options_parser.rb
171
255
  - lib/axlsx/util/parser.rb
172
256
  - lib/axlsx/util/serialized_attributes.rb
@@ -178,6 +262,8 @@ files:
178
262
  - lib/axlsx/workbook/defined_names.rb
179
263
  - lib/axlsx/workbook/shared_strings_table.rb
180
264
  - lib/axlsx/workbook/workbook.rb
265
+ - lib/axlsx/workbook/workbook_view.rb
266
+ - lib/axlsx/workbook/workbook_views.rb
181
267
  - lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb
182
268
  - lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb
183
269
  - lib/axlsx/workbook/worksheet/auto_filter/filters.rb
@@ -203,6 +289,7 @@ files:
203
289
  - lib/axlsx/workbook/worksheet/header_footer.rb
204
290
  - lib/axlsx/workbook/worksheet/icon_set.rb
205
291
  - lib/axlsx/workbook/worksheet/merged_cells.rb
292
+ - lib/axlsx/workbook/worksheet/outline_pr.rb
206
293
  - lib/axlsx/workbook/worksheet/page_margins.rb
207
294
  - lib/axlsx/workbook/worksheet/page_set_up_pr.rb
208
295
  - lib/axlsx/workbook/worksheet/page_setup.rb
@@ -213,6 +300,8 @@ files:
213
300
  - lib/axlsx/workbook/worksheet/print_options.rb
214
301
  - lib/axlsx/workbook/worksheet/protected_range.rb
215
302
  - lib/axlsx/workbook/worksheet/protected_ranges.rb
303
+ - lib/axlsx/workbook/worksheet/rich_text.rb
304
+ - lib/axlsx/workbook/worksheet/rich_text_run.rb
216
305
  - lib/axlsx/workbook/worksheet/row.rb
217
306
  - lib/axlsx/workbook/worksheet/row_breaks.rb
218
307
  - lib/axlsx/workbook/worksheet/selection.rb
@@ -230,7 +319,6 @@ files:
230
319
  - lib/axlsx/workbook/worksheet/worksheet_drawing.rb
231
320
  - lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb
232
321
  - lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb
233
- - lib/axlsx.rb
234
322
  - lib/schema/dc.xsd
235
323
  - lib/schema/dcmitype.xsd
236
324
  - lib/schema/dcterms.xsd
@@ -266,35 +354,6 @@ files:
266
354
  - lib/schema/vml-wordprocessingDrawing.xsd
267
355
  - lib/schema/wml.xsd
268
356
  - lib/schema/xml.xsd
269
- - examples/2010_comments.rb
270
- - examples/anchor_swapping.rb
271
- - examples/auto_filter.rb
272
- - examples/basic_charts.rb
273
- - examples/chart_colors.rb
274
- - examples/colored_links.rb
275
- - examples/conditional_formatting/example_conditional_formatting.rb
276
- - examples/conditional_formatting/getting_barred.rb
277
- - examples/conditional_formatting/hitting_the_high_notes.rb
278
- - examples/conditional_formatting/scaled_colors.rb
279
- - examples/conditional_formatting/stop_and_go.rb
280
- - examples/data_validation.rb
281
- - examples/example.rb
282
- - examples/extractive.rb
283
- - examples/ios_preview.rb
284
- - examples/page_setup.rb
285
- - examples/pivot_table.rb
286
- - examples/sheet_protection.rb
287
- - examples/skydrive/real_example.rb
288
- - examples/styles.rb
289
- - examples/underline.rb
290
- - examples/wrap_text.rb
291
- - examples/image1.jpeg
292
- - LICENSE
293
- - README.md
294
- - Rakefile
295
- - CHANGELOG.md
296
- - .yardopts
297
- - .yardopts_guide
298
357
  - test/axlsx.qcachegrind
299
358
  - test/benchmark.rb
300
359
  - test/content_type/tc_content_type.rb
@@ -302,10 +361,15 @@ files:
302
361
  - test/content_type/tc_override.rb
303
362
  - test/doc_props/tc_app.rb
304
363
  - test/doc_props/tc_core.rb
364
+ - test/drawing/tc_area_chart.rb
365
+ - test/drawing/tc_area_series.rb
305
366
  - test/drawing/tc_axes.rb
306
367
  - test/drawing/tc_axis.rb
307
368
  - test/drawing/tc_bar_3D_chart.rb
369
+ - test/drawing/tc_bar_chart.rb
308
370
  - test/drawing/tc_bar_series.rb
371
+ - test/drawing/tc_bubble_chart.rb
372
+ - test/drawing/tc_bubble_series.rb
309
373
  - test/drawing/tc_cat_axis.rb
310
374
  - test/drawing/tc_cat_axis_data.rb
311
375
  - test/drawing/tc_chart.rb
@@ -364,12 +428,14 @@ files:
364
428
  - test/tc_axlsx.rb
365
429
  - test/tc_helper.rb
366
430
  - test/tc_package.rb
431
+ - test/util/tc_mime_type_utils.rb
367
432
  - test/util/tc_serialized_attributes.rb
368
433
  - test/util/tc_simple_typed_list.rb
369
434
  - test/util/tc_validators.rb
370
435
  - test/workbook/tc_defined_name.rb
371
436
  - test/workbook/tc_shared_strings_table.rb
372
437
  - test/workbook/tc_workbook.rb
438
+ - test/workbook/tc_workbook_view.rb
373
439
  - test/workbook/worksheet/auto_filter/tc_auto_filter.rb
374
440
  - test/workbook/worksheet/auto_filter/tc_filter_column.rb
375
441
  - test/workbook/worksheet/auto_filter/tc_filters.rb
@@ -386,6 +452,7 @@ files:
386
452
  - test/workbook/worksheet/tc_date_time_converter.rb
387
453
  - test/workbook/worksheet/tc_header_footer.rb
388
454
  - test/workbook/worksheet/tc_icon_set.rb
455
+ - test/workbook/worksheet/tc_outline_pr.rb
389
456
  - test/workbook/worksheet/tc_page_margins.rb
390
457
  - test/workbook/worksheet/tc_page_set_up_pr.rb
391
458
  - test/workbook/worksheet/tc_page_setup.rb
@@ -394,6 +461,8 @@ files:
394
461
  - test/workbook/worksheet/tc_pivot_table_cache_definition.rb
395
462
  - test/workbook/worksheet/tc_print_options.rb
396
463
  - test/workbook/worksheet/tc_protected_range.rb
464
+ - test/workbook/worksheet/tc_rich_text.rb
465
+ - test/workbook/worksheet/tc_rich_text_run.rb
397
466
  - test/workbook/worksheet/tc_row.rb
398
467
  - test/workbook/worksheet/tc_selection.rb
399
468
  - test/workbook/worksheet/tc_sheet_calc_pr.rb
@@ -415,20 +484,20 @@ require_paths:
415
484
  - lib
416
485
  required_ruby_version: !ruby/object:Gem::Requirement
417
486
  requirements:
418
- - - '>='
487
+ - - ">="
419
488
  - !ruby/object:Gem::Version
420
489
  version: 1.9.2
421
490
  required_rubygems_version: !ruby/object:Gem::Requirement
422
491
  requirements:
423
- - - '>='
492
+ - - ">"
424
493
  - !ruby/object:Gem::Version
425
- version: '0'
494
+ version: 1.3.1
426
495
  requirements: []
427
496
  rubyforge_project:
428
- rubygems_version: 2.0.2
497
+ rubygems_version: 2.6.13
429
498
  signing_key:
430
499
  specification_version: 4
431
- summary: excel OOXML (xlsx) with charts, styles, images and autowidth columns.
500
+ summary: Excel OOXML (xlsx) with charts, styles, images and autowidth columns.
432
501
  test_files:
433
502
  - test/axlsx.qcachegrind
434
503
  - test/benchmark.rb
@@ -437,10 +506,15 @@ test_files:
437
506
  - test/content_type/tc_override.rb
438
507
  - test/doc_props/tc_app.rb
439
508
  - test/doc_props/tc_core.rb
509
+ - test/drawing/tc_area_chart.rb
510
+ - test/drawing/tc_area_series.rb
440
511
  - test/drawing/tc_axes.rb
441
512
  - test/drawing/tc_axis.rb
442
513
  - test/drawing/tc_bar_3D_chart.rb
514
+ - test/drawing/tc_bar_chart.rb
443
515
  - test/drawing/tc_bar_series.rb
516
+ - test/drawing/tc_bubble_chart.rb
517
+ - test/drawing/tc_bubble_series.rb
444
518
  - test/drawing/tc_cat_axis.rb
445
519
  - test/drawing/tc_cat_axis_data.rb
446
520
  - test/drawing/tc_chart.rb
@@ -499,12 +573,14 @@ test_files:
499
573
  - test/tc_axlsx.rb
500
574
  - test/tc_helper.rb
501
575
  - test/tc_package.rb
576
+ - test/util/tc_mime_type_utils.rb
502
577
  - test/util/tc_serialized_attributes.rb
503
578
  - test/util/tc_simple_typed_list.rb
504
579
  - test/util/tc_validators.rb
505
580
  - test/workbook/tc_defined_name.rb
506
581
  - test/workbook/tc_shared_strings_table.rb
507
582
  - test/workbook/tc_workbook.rb
583
+ - test/workbook/tc_workbook_view.rb
508
584
  - test/workbook/worksheet/auto_filter/tc_auto_filter.rb
509
585
  - test/workbook/worksheet/auto_filter/tc_filter_column.rb
510
586
  - test/workbook/worksheet/auto_filter/tc_filters.rb
@@ -521,6 +597,7 @@ test_files:
521
597
  - test/workbook/worksheet/tc_date_time_converter.rb
522
598
  - test/workbook/worksheet/tc_header_footer.rb
523
599
  - test/workbook/worksheet/tc_icon_set.rb
600
+ - test/workbook/worksheet/tc_outline_pr.rb
524
601
  - test/workbook/worksheet/tc_page_margins.rb
525
602
  - test/workbook/worksheet/tc_page_set_up_pr.rb
526
603
  - test/workbook/worksheet/tc_page_setup.rb
@@ -529,6 +606,8 @@ test_files:
529
606
  - test/workbook/worksheet/tc_pivot_table_cache_definition.rb
530
607
  - test/workbook/worksheet/tc_print_options.rb
531
608
  - test/workbook/worksheet/tc_protected_range.rb
609
+ - test/workbook/worksheet/tc_rich_text.rb
610
+ - test/workbook/worksheet/tc_rich_text_run.rb
532
611
  - test/workbook/worksheet/tc_row.rb
533
612
  - test/workbook/worksheet/tc_selection.rb
534
613
  - test/workbook/worksheet/tc_sheet_calc_pr.rb
@@ -540,4 +619,3 @@ test_files:
540
619
  - test/workbook/worksheet/tc_table_style_info.rb
541
620
  - test/workbook/worksheet/tc_worksheet.rb
542
621
  - test/workbook/worksheet/tc_worksheet_hyperlink.rb
543
- has_rdoc: axlsx