axlsx 1.1.8 → 1.2.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 (60) hide show
  1. data/.yardopts +5 -2
  2. data/CHANGELOG.md +39 -0
  3. data/README.md +48 -46
  4. data/Rakefile +3 -3
  5. data/examples/basic_charts.rb +8 -0
  6. data/examples/example.rb +7 -1
  7. data/examples/example.xlsx +0 -0
  8. data/examples/example_streamed.xlsx +0 -0
  9. data/examples/no-use_autowidth.xlsx +0 -0
  10. data/examples/scraping_html.rb +91 -0
  11. data/examples/shared_strings_example.xlsx +0 -0
  12. data/lib/axlsx.rb +14 -8
  13. data/lib/axlsx/drawing/bar_3D_chart.rb +2 -8
  14. data/lib/axlsx/drawing/chart.rb +29 -25
  15. data/lib/axlsx/drawing/d_lbls.rb +100 -0
  16. data/lib/axlsx/drawing/drawing.rb +2 -0
  17. data/lib/axlsx/drawing/line_3D_chart.rb +2 -9
  18. data/lib/axlsx/drawing/pie_3D_chart.rb +3 -0
  19. data/lib/axlsx/drawing/scatter_chart.rb +2 -8
  20. data/lib/axlsx/drawing/two_cell_anchor.rb +38 -1
  21. data/lib/axlsx/util/simple_typed_list.rb +13 -6
  22. data/lib/axlsx/version.rb +2 -7
  23. data/lib/axlsx/workbook/defined_name.rb +174 -0
  24. data/lib/axlsx/workbook/defined_names.rb +21 -0
  25. data/lib/axlsx/workbook/workbook.rb +39 -13
  26. data/lib/axlsx/workbook/worksheet/auto_filter.rb +34 -0
  27. data/lib/axlsx/workbook/worksheet/cell.rb +24 -1
  28. data/lib/axlsx/workbook/worksheet/col.rb +15 -0
  29. data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
  30. data/lib/axlsx/workbook/worksheet/comments.rb +8 -0
  31. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
  32. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
  33. data/lib/axlsx/workbook/worksheet/dimension.rb +65 -0
  34. data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
  35. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
  36. data/lib/axlsx/workbook/worksheet/row.rb +1 -1
  37. data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -0
  38. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +24 -0
  39. data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
  40. data/lib/axlsx/workbook/worksheet/worksheet.rb +263 -380
  41. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +57 -0
  42. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +64 -0
  43. data/test/drawing/tc_bar_series.rb +1 -1
  44. data/test/drawing/tc_chart.rb +7 -1
  45. data/test/drawing/tc_d_lbls.rb +47 -0
  46. data/test/drawing/tc_drawing.rb +5 -4
  47. data/test/drawing/tc_line_series.rb +1 -1
  48. data/test/drawing/tc_pie_3D_chart.rb +1 -1
  49. data/test/drawing/tc_pie_series.rb +1 -1
  50. data/test/drawing/tc_scatter_series.rb +1 -1
  51. data/test/drawing/tc_series.rb +1 -1
  52. data/test/tc_package.rb +16 -1
  53. data/test/workbook/tc_defined_name.rb +41 -0
  54. data/test/workbook/tc_workbook.rb +5 -3
  55. data/test/workbook/worksheet/table/tc_table.rb +0 -8
  56. data/test/workbook/worksheet/tc_cell.rb +2 -4
  57. data/test/workbook/worksheet/tc_protected_range.rb +0 -1
  58. data/test/workbook/worksheet/tc_row.rb +2 -2
  59. data/test/workbook/worksheet/tc_worksheet.rb +19 -21
  60. metadata +48 -7
@@ -11,7 +11,6 @@ def test_initialize_options
11
11
  end
12
12
 
13
13
  def test_range
14
- assert_equal(0, @ws.protected_ranges.size)
15
14
  r = @ws.protect_range('A1:B1')
16
15
  assert_equal('A1:B1', r.sqref)
17
16
  end
@@ -38,8 +38,8 @@ class TestRow < Test::Unit::TestCase
38
38
  end
39
39
 
40
40
  def test_add_cell_autowidth_info
41
- width = @ws.send :calculate_width, 'this is the cell of cells', @ws.workbook.styles.fonts.first.sz
42
- @row.add_cell("this is the cell of cells")
41
+ cell = @row.add_cell("this is the cell of cells")
42
+ width = cell.send(:autowidth)
43
43
  assert_equal(@ws.column_info.last.width, width)
44
44
  end
45
45
 
@@ -113,12 +113,12 @@ class TestWorksheet < Test::Unit::TestCase
113
113
  def test_dimension
114
114
  @ws.add_row [1, 2, 3]
115
115
  @ws.add_row [4, 5, 6]
116
- assert_equal @ws.dimension, "A1:C2"
116
+ assert_equal @ws.dimension.sqref, "A1:C2"
117
117
  end
118
118
 
119
119
  def test_dimension_with_empty_row
120
120
  @ws.add_row
121
- assert_equal "A1:AA200", @ws.dimension
121
+ assert_equal "A1:AA200", @ws.dimension.sqref
122
122
  end
123
123
 
124
124
  def test_referencing
@@ -148,7 +148,9 @@ class TestWorksheet < Test::Unit::TestCase
148
148
  end
149
149
 
150
150
  def test_drawing
151
- assert @ws.drawing.is_a? Axlsx::Drawing
151
+ assert @ws.drawing == nil
152
+ @ws.add_chart(Axlsx::Pie3DChart)
153
+ assert @ws.drawing.is_a?(Axlsx::Drawing)
152
154
  end
153
155
 
154
156
  def test_col_style
@@ -306,18 +308,16 @@ class TestWorksheet < Test::Unit::TestCase
306
308
  assert_equal(doc.xpath('//xmlns:worksheet/xmlns:tableParts/xmlns:tablePart[@r:id="rId1"]').size, 1)
307
309
  end
308
310
 
309
- def test_abs_auto_filter
310
- @ws.add_row [1, "two", 3]
311
- @ws.auto_filter = "A1:C1"
312
- assert_equal(@ws.abs_auto_filter, "'Sheet1'!$A$1:$C$1")
313
- end
314
-
315
311
  def test_to_xml_string
316
312
  schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
317
313
  doc = Nokogiri::XML(@ws.to_xml_string)
318
314
  assert(schema.validate(doc).map{ |e| puts e.message; e }.empty?, "error free validation")
319
315
  end
320
316
 
317
+ def test_styles
318
+ assert(@ws.styles.is_a?(Axlsx::Styles), 'worksheet provides access to styles')
319
+ end
320
+
321
321
  def test_to_xml_string_with_illegal_chars
322
322
  nasties = "\v\u2028\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u001f"
323
323
  @ws.add_row [nasties]
@@ -365,7 +365,7 @@ class TestWorksheet < Test::Unit::TestCase
365
365
  def test_set_fixed_width_column
366
366
  @ws.add_row ["mule", "donkey", "horse"], :widths => [20, :ignore, nil]
367
367
  assert(@ws.column_info.size == 3, "a data item for each column")
368
- assert_equal(@ws.column_info[0].width, 20, "adding a row with fixed width updates :fixed attribute")
368
+ assert_equal(20, @ws.column_info[0].width, "adding a row with fixed width updates :fixed attribute")
369
369
  assert_equal(@ws.column_info[1].width, nil, ":ignore does not set any data")
370
370
  end
371
371
 
@@ -383,29 +383,27 @@ class TestWorksheet < Test::Unit::TestCase
383
383
  end
384
384
 
385
385
  def test_protect_range
386
- assert(@ws.protected_ranges.is_a?(Axlsx::SimpleTypedList))
387
- assert_equal(0, @ws.protected_ranges.size)
386
+ assert(@ws.send(:protected_ranges).is_a?(Axlsx::SimpleTypedList))
387
+ assert_equal(0, @ws.send(:protected_ranges).size)
388
388
  @ws.protect_range('A1:A3')
389
- assert_equal('A1:A3', @ws.protected_ranges.last.sqref)
389
+ assert_equal('A1:A3', @ws.send(:protected_ranges).last.sqref)
390
390
  end
391
391
 
392
392
  def test_protect_range_with_cells
393
393
  @ws.add_row [1, 2, 3]
394
394
  assert_nothing_raised {@ws.protect_range(@ws.rows.first.cells) }
395
- assert_equal('A1:C1', @ws.protected_ranges.last.sqref)
395
+ assert_equal('A1:C1', @ws.send(:protected_ranges).last.sqref)
396
396
 
397
397
  end
398
398
  def test_merge_cells
399
- assert(@ws.merged_cells.is_a?(Array))
400
- assert_equal(@ws.merged_cells.size, 0)
401
399
  @ws.add_row [1,2,3]
402
400
  @ws.add_row [4,5,6]
403
401
  @ws.add_row [7,8,9]
404
402
  @ws.merge_cells "A1:A2"
405
403
  @ws.merge_cells "B2:C3"
406
404
  @ws.merge_cells @ws.rows.last.cells[(0..1)]
407
- assert_equal(@ws.merged_cells.size, 3)
408
- assert_equal(@ws.merged_cells.last, "A3:B3")
405
+ assert_equal(@ws.send(:merged_cells).size, 3)
406
+ assert_equal(@ws.send(:merged_cells).last, "A3:B3")
409
407
  end
410
408
 
411
409
  def test_merge_cells_sorts_correctly_by_row_when_given_array
@@ -413,13 +411,13 @@ class TestWorksheet < Test::Unit::TestCase
413
411
  @ws.add_row [i]
414
412
  end
415
413
  @ws.merge_cells [@ws.rows[8].cells.first, @ws.rows[9].cells.first]
416
- assert_equal "A9:A10", @ws.merged_cells.first
414
+ assert_equal "A9:A10", @ws.send(:merged_cells).first
417
415
  end
418
416
 
419
417
  def test_auto_filter
420
- assert(@ws.auto_filter.nil?)
418
+ assert(@ws.auto_filter.range.nil?)
421
419
  assert_raise(ArgumentError) { @ws.auto_filter = 123 }
422
420
  @ws.auto_filter = "A1:D9"
423
- assert_equal(@ws.auto_filter, "A1:D9")
421
+ assert_equal(@ws.auto_filter.range, "A1:D9")
424
422
  end
425
423
  end
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.8
4
+ version: 1.2.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: 2012-07-14 00:00:00.000000000 Z
12
+ date: 2012-08-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -60,21 +60,37 @@ dependencies:
60
60
  - !ruby/object:Gem::Version
61
61
  version: 4.3.1
62
62
  - !ruby/object:Gem::Dependency
63
- name: rake
63
+ name: yard
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
67
  - - ! '>='
68
68
  - !ruby/object:Gem::Version
69
- version: 0.8.7
70
- type: :runtime
69
+ version: '0'
70
+ type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
- version: 0.8.7
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: kramdown
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
78
94
  - !ruby/object:Gem::Dependency
79
95
  name: cover_me
80
96
  requirement: !ruby/object:Gem::Requirement
@@ -115,6 +131,7 @@ files:
115
131
  - lib/axlsx/drawing/bar_series.rb
116
132
  - lib/axlsx/drawing/cat_axis.rb
117
133
  - lib/axlsx/drawing/chart.rb
134
+ - lib/axlsx/drawing/d_lbls.rb
118
135
  - lib/axlsx/drawing/drawing.rb
119
136
  - lib/axlsx/drawing/graphic_frame.rb
120
137
  - lib/axlsx/drawing/hyperlink.rb
@@ -170,31 +187,45 @@ files:
170
187
  - lib/axlsx/util/storage.rb
171
188
  - lib/axlsx/util/validators.rb
172
189
  - lib/axlsx/version.rb
190
+ - lib/axlsx/workbook/defined_name.rb
191
+ - lib/axlsx/workbook/defined_names.rb
173
192
  - lib/axlsx/workbook/shared_strings_table.rb
174
193
  - lib/axlsx/workbook/workbook.rb
194
+ - lib/axlsx/workbook/worksheet/auto_filter.rb
175
195
  - lib/axlsx/workbook/worksheet/cell.rb
176
196
  - lib/axlsx/workbook/worksheet/cfvo.rb
177
197
  - lib/axlsx/workbook/worksheet/col.rb
178
198
  - lib/axlsx/workbook/worksheet/color_scale.rb
199
+ - lib/axlsx/workbook/worksheet/cols.rb
179
200
  - lib/axlsx/workbook/worksheet/comment.rb
180
201
  - lib/axlsx/workbook/worksheet/comments.rb
181
202
  - lib/axlsx/workbook/worksheet/conditional_formatting.rb
182
203
  - lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb
204
+ - lib/axlsx/workbook/worksheet/conditional_formattings.rb
183
205
  - lib/axlsx/workbook/worksheet/data_bar.rb
184
206
  - lib/axlsx/workbook/worksheet/data_validation.rb
207
+ - lib/axlsx/workbook/worksheet/data_validations.rb
185
208
  - lib/axlsx/workbook/worksheet/date_time_converter.rb
209
+ - lib/axlsx/workbook/worksheet/dimension.rb
186
210
  - lib/axlsx/workbook/worksheet/icon_set.rb
211
+ - lib/axlsx/workbook/worksheet/merged_cells.rb
187
212
  - lib/axlsx/workbook/worksheet/page_margins.rb
188
213
  - lib/axlsx/workbook/worksheet/page_setup.rb
189
214
  - lib/axlsx/workbook/worksheet/pane.rb
190
215
  - lib/axlsx/workbook/worksheet/print_options.rb
191
216
  - lib/axlsx/workbook/worksheet/protected_range.rb
217
+ - lib/axlsx/workbook/worksheet/protected_ranges.rb
192
218
  - lib/axlsx/workbook/worksheet/row.rb
193
219
  - lib/axlsx/workbook/worksheet/selection.rb
220
+ - lib/axlsx/workbook/worksheet/sheet_data.rb
221
+ - lib/axlsx/workbook/worksheet/sheet_pr.rb
194
222
  - lib/axlsx/workbook/worksheet/sheet_protection.rb
195
223
  - lib/axlsx/workbook/worksheet/sheet_view.rb
196
224
  - lib/axlsx/workbook/worksheet/table.rb
225
+ - lib/axlsx/workbook/worksheet/tables.rb
197
226
  - lib/axlsx/workbook/worksheet/worksheet.rb
227
+ - lib/axlsx/workbook/worksheet/worksheet_comments.rb
228
+ - lib/axlsx/workbook/worksheet/worksheet_drawing.rb
198
229
  - lib/axlsx.rb
199
230
  - lib/schema/dc.xsd
200
231
  - lib/schema/dcmitype.xsd
@@ -240,13 +271,18 @@ files:
240
271
  - examples/conditional_formatting/stop_and_go.rb
241
272
  - examples/data_validation.rb
242
273
  - examples/example.rb
274
+ - examples/example.xlsx
275
+ - examples/example_streamed.xlsx
243
276
  - examples/extractive.pdf
244
277
  - examples/extractive.rb
245
278
  - examples/image1.gif
246
279
  - examples/image1.jpeg
247
280
  - examples/image1.jpg
248
281
  - examples/image1.png
282
+ - examples/no-use_autowidth.xlsx
249
283
  - examples/sample.png
284
+ - examples/scraping_html.rb
285
+ - examples/shared_strings_example.xlsx
250
286
  - examples/sheet_protection.rb
251
287
  - examples/sheet_view.rb
252
288
  - examples/skydrive/real_example.rb
@@ -268,6 +304,7 @@ files:
268
304
  - test/drawing/tc_cat_axis.rb
269
305
  - test/drawing/tc_cat_axis_data.rb
270
306
  - test/drawing/tc_chart.rb
307
+ - test/drawing/tc_d_lbls.rb
271
308
  - test/drawing/tc_data_source.rb
272
309
  - test/drawing/tc_drawing.rb
273
310
  - test/drawing/tc_graphic_frame.rb
@@ -323,6 +360,7 @@ files:
323
360
  - test/tc_package.rb
324
361
  - test/util/tc_simple_typed_list.rb
325
362
  - test/util/tc_validators.rb
363
+ - test/workbook/tc_defined_name.rb
326
364
  - test/workbook/tc_shared_strings_table.rb
327
365
  - test/workbook/tc_workbook.rb
328
366
  - test/workbook/worksheet/table/tc_table.rb
@@ -367,7 +405,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
367
405
  version: '0'
368
406
  segments:
369
407
  - 0
370
- hash: -13242224990218359
408
+ hash: 2125383540867602531
371
409
  requirements: []
372
410
  rubyforge_project:
373
411
  rubygems_version: 1.8.24
@@ -387,6 +425,7 @@ test_files:
387
425
  - test/drawing/tc_cat_axis.rb
388
426
  - test/drawing/tc_cat_axis_data.rb
389
427
  - test/drawing/tc_chart.rb
428
+ - test/drawing/tc_d_lbls.rb
390
429
  - test/drawing/tc_data_source.rb
391
430
  - test/drawing/tc_drawing.rb
392
431
  - test/drawing/tc_graphic_frame.rb
@@ -442,6 +481,7 @@ test_files:
442
481
  - test/tc_package.rb
443
482
  - test/util/tc_simple_typed_list.rb
444
483
  - test/util/tc_validators.rb
484
+ - test/workbook/tc_defined_name.rb
445
485
  - test/workbook/tc_shared_strings_table.rb
446
486
  - test/workbook/tc_workbook.rb
447
487
  - test/workbook/worksheet/table/tc_table.rb
@@ -466,3 +506,4 @@ test_files:
466
506
  - test/workbook/worksheet/tc_sheet_protection.rb
467
507
  - test/workbook/worksheet/tc_sheet_view.rb
468
508
  - test/workbook/worksheet/tc_worksheet.rb
509
+ has_rdoc: axlsx