axlsx 1.2.3 → 1.3.1

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 (65) hide show
  1. data/.yardopts +3 -2
  2. data/CHANGELOG.md +34 -1
  3. data/README.md +26 -37
  4. data/Rakefile +1 -1
  5. data/examples/auto_filter.rb +16 -0
  6. data/examples/auto_filter.xlsx +0 -0
  7. data/examples/example.rb +3 -2
  8. data/examples/example.xlsx +0 -0
  9. data/examples/example_streamed.xlsx +0 -0
  10. data/examples/no-use_autowidth.xlsx +0 -0
  11. data/examples/shared_strings_example.xlsx +0 -0
  12. data/examples/skydrive/real_example.rb +6 -6
  13. data/examples/sprk2012/Screen Shot 2012-09-11 at 10.42.06 PM.png +0 -0
  14. data/examples/sprk2012/Screen Shot 2012-09-11 at 11.07.48 PM.png +0 -0
  15. data/examples/sprk2012/Screen Shot 2012-09-11 at 8.31.50 PM.png +0 -0
  16. data/examples/sprk2012/Screen Shot 2012-09-11 at 9.23.27 PM.png +0 -0
  17. data/examples/sprk2012/Screen Shot 2012-09-11 at 9.32.06 PM.png +0 -0
  18. data/examples/sprk2012/Screen Shot 2012-09-11 at 9.33.35 PM.png +0 -0
  19. data/examples/sprk2012/Screen Shot 2012-09-11 at 9.46.44 PM.png +0 -0
  20. data/examples/sprk2012/Screen Shot 2012-09-12 at 5.07.23 PM.png +0 -0
  21. data/examples/sprk2012/basics.rb +1 -0
  22. data/examples/sprk2012/basics.xlsx +0 -0
  23. data/examples/sprk2012/gravatar.jpeg +0 -0
  24. data/examples/sprk2012/hair_club.jpg +0 -0
  25. data/examples/sprk2012/images.rb +7 -12
  26. data/examples/sprk2012/images.xlsx +0 -0
  27. data/examples/sprk2012/line_chart.rb +56 -0
  28. data/examples/sprk2012/line_chart.xlsx +0 -0
  29. data/examples/sprk2012/sprk2012.key +0 -0
  30. data/examples/sprk2012/styles.rb +13 -12
  31. data/examples/sprk2012/styles.xlsx +0 -0
  32. data/examples/styles.rb +62 -0
  33. data/examples/styles.xlsx +0 -0
  34. data/lib/axlsx.rb +8 -1
  35. data/lib/axlsx/stylesheet/styles.rb +4 -0
  36. data/lib/axlsx/util/constants.rb +90 -5
  37. data/lib/axlsx/util/validators.rb +26 -8
  38. data/lib/axlsx/version.rb +2 -2
  39. data/lib/axlsx/workbook/workbook.rb +4 -1
  40. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
  41. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +102 -0
  42. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +253 -0
  43. data/lib/axlsx/workbook/worksheet/cell.rb +9 -4
  44. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +1 -1
  45. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +47 -0
  46. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +49 -0
  47. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -4
  48. data/lib/axlsx/workbook/worksheet/table.rb +8 -1
  49. data/lib/axlsx/workbook/worksheet/table_style_info.rb +68 -0
  50. data/lib/axlsx/workbook/worksheet/worksheet.rb +18 -3
  51. data/test/stylesheet/tc_styles.rb +13 -0
  52. data/test/util/tc_validators.rb +8 -1
  53. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
  54. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
  55. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
  56. data/test/workbook/worksheet/tc_cell.rb +5 -0
  57. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
  58. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
  59. data/test/workbook/worksheet/tc_sheet_pr.rb +27 -0
  60. data/test/workbook/worksheet/{table/tc_table.rb → tc_table.rb} +6 -1
  61. data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
  62. data/test/workbook/worksheet/tc_worksheet.rb +17 -3
  63. metadata +45 -7
  64. data/examples/~$extractive.xlsx +0 -0
  65. data/lib/axlsx/workbook/worksheet/auto_filter.rb +0 -35
@@ -0,0 +1,53 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestTableStyleInfo < Test::Unit::TestCase
4
+ def setup
5
+ p = Axlsx::Package.new
6
+ @ws = p.workbook.add_worksheet
7
+ 40.times do
8
+ @ws.add_row %w(aa bb cc dd ee ff gg hh ii jj kk)
9
+ end
10
+ @table = @ws.add_table(Axlsx::cell_range([@ws.rows.first.cells.first,@ws.rows.last.cells.last], false), :name => 'foo')
11
+ @options = { :show_first_column => 1,
12
+ :show_last_column => 1,
13
+ :show_row_stripes => 1,
14
+ :show_column_stripes => 1,
15
+ :name => "TableStyleDark4" }
16
+
17
+
18
+ end
19
+
20
+ def test_initialize
21
+ table_style = Axlsx::TableStyleInfo.new @options
22
+ @options.each do |key, value|
23
+ assert_equal(value, table_style.send(key.to_sym))
24
+ end
25
+ end
26
+
27
+ def test_boolean_properties
28
+ table_style = Axlsx::TableStyleInfo.new
29
+ @options.keys.each do |key|
30
+ assert_nothing_raised { table_style.send("#{key.to_sym}=", true) }
31
+ assert_raises(ArgumentError) { table_style.send(key.to_sym, 'foo') }
32
+ end
33
+ end
34
+ def doc
35
+ @doc ||= Nokogiri::XML(Axlsx::TableStyleInfo.new(@options).to_xml_string)
36
+ end
37
+
38
+ def test_to_xml_string_first_column
39
+ assert(doc.xpath('//tableStyleInfo[@showLastColumn=1]'))
40
+ end
41
+
42
+ def test_to_xml_string_row_stripes
43
+ assert(doc.xpath('//tableStyleInfo[@showRowStripes=1]'))
44
+ end
45
+
46
+ def test_to_xml_string_column_stripes
47
+ assert(doc.xpath('//tableStyleInfo[@showColumnStripes=1]'))
48
+ end
49
+
50
+ def test_to_xml_string_name
51
+ assert(doc.xpath("//tableStyleInfo[@name=#{@options[:name]}]"))
52
+ end
53
+ end
@@ -246,7 +246,7 @@ class TestWorksheet < Test::Unit::TestCase
246
246
 
247
247
  def test_to_xml_string_auto_filter
248
248
  @ws.add_row [1, "two"]
249
- @ws.auto_filter = "A1:B1"
249
+ @ws.auto_filter.range = "A1:B1"
250
250
  doc = Nokogiri::XML(@ws.to_xml_string)
251
251
  assert_equal(doc.xpath('//xmlns:worksheet/xmlns:autoFilter[@ref="A1:B1"]').size, 1)
252
252
  end
@@ -324,13 +324,20 @@ class TestWorksheet < Test::Unit::TestCase
324
324
  assert_equal(0, @ws.rows.last.cells.last.value.index("\v"))
325
325
  assert_equal(nil,@ws.to_xml_string.index("\v"))
326
326
  end
327
+
328
+ def test_to_xml_string_with_newlines
329
+ cell_with_newline = "foo\n\r\nbar"
330
+ @ws.add_row [cell_with_newline]
331
+ assert_equal("foo\n\r\nbar", @ws.rows.last.cells.last.value)
332
+ assert_not_nil(@ws.to_xml_string.index("foo\n\r\nbar"))
333
+ end
327
334
  # Make sure the XML for all optional elements (like pageMargins, autoFilter, ...)
328
335
  # is generated in correct order.
329
336
  def test_valid_with_optional_elements
330
337
  @ws.page_margins.set :left => 9
331
338
  @ws.page_setup.set :fit_to_width => 1
332
339
  @ws.print_options.set :headings => true
333
- @ws.auto_filter = "A1:C3"
340
+ @ws.auto_filter.range = "A1:C3"
334
341
  @ws.merge_cells "A4:A5"
335
342
  @ws.add_chart Axlsx::Pie3DChart
336
343
  @ws.add_table "E1:F3"
@@ -417,7 +424,14 @@ class TestWorksheet < Test::Unit::TestCase
417
424
  def test_auto_filter
418
425
  assert(@ws.auto_filter.range.nil?)
419
426
  assert_raise(ArgumentError) { @ws.auto_filter = 123 }
420
- @ws.auto_filter = "A1:D9"
427
+ @ws.auto_filter.range = "A1:D9"
421
428
  assert_equal(@ws.auto_filter.range, "A1:D9")
422
429
  end
430
+
431
+ def test_sheet_pr_for_auto_filter
432
+ @ws.auto_filter.range = 'A1:D9'
433
+ @ws.auto_filter.add_column 0, :filters, :filter_items => [1]
434
+ doc = Nokogiri::XML(@ws.to_xml_string)
435
+ assert(doc.xpath('//sheetPr[@filterMode="true"]'))
436
+ end
423
437
  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.2.3
4
+ version: 1.3.1
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-09-08 00:00:00.000000000 Z
12
+ date: 2012-09-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -191,7 +191,9 @@ files:
191
191
  - lib/axlsx/workbook/defined_names.rb
192
192
  - lib/axlsx/workbook/shared_strings_table.rb
193
193
  - lib/axlsx/workbook/workbook.rb
194
- - lib/axlsx/workbook/worksheet/auto_filter.rb
194
+ - lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb
195
+ - lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb
196
+ - lib/axlsx/workbook/worksheet/auto_filter/filters.rb
195
197
  - lib/axlsx/workbook/worksheet/cell.rb
196
198
  - lib/axlsx/workbook/worksheet/cfvo.rb
197
199
  - lib/axlsx/workbook/worksheet/col.rb
@@ -210,6 +212,7 @@ files:
210
212
  - lib/axlsx/workbook/worksheet/icon_set.rb
211
213
  - lib/axlsx/workbook/worksheet/merged_cells.rb
212
214
  - lib/axlsx/workbook/worksheet/page_margins.rb
215
+ - lib/axlsx/workbook/worksheet/page_set_up_pr.rb
213
216
  - lib/axlsx/workbook/worksheet/page_setup.rb
214
217
  - lib/axlsx/workbook/worksheet/pane.rb
215
218
  - lib/axlsx/workbook/worksheet/print_options.rb
@@ -217,11 +220,13 @@ files:
217
220
  - lib/axlsx/workbook/worksheet/protected_ranges.rb
218
221
  - lib/axlsx/workbook/worksheet/row.rb
219
222
  - lib/axlsx/workbook/worksheet/selection.rb
223
+ - lib/axlsx/workbook/worksheet/sheet_calc_pr.rb
220
224
  - lib/axlsx/workbook/worksheet/sheet_data.rb
221
225
  - lib/axlsx/workbook/worksheet/sheet_pr.rb
222
226
  - lib/axlsx/workbook/worksheet/sheet_protection.rb
223
227
  - lib/axlsx/workbook/worksheet/sheet_view.rb
224
228
  - lib/axlsx/workbook/worksheet/table.rb
229
+ - lib/axlsx/workbook/worksheet/table_style_info.rb
225
230
  - lib/axlsx/workbook/worksheet/tables.rb
226
231
  - lib/axlsx/workbook/worksheet/worksheet.rb
227
232
  - lib/axlsx/workbook/worksheet/worksheet_comments.rb
@@ -264,6 +269,8 @@ files:
264
269
  - lib/schema/vml-wordprocessingDrawing.xsd
265
270
  - lib/schema/wml.xsd
266
271
  - lib/schema/xml.xsd
272
+ - examples/auto_filter.rb
273
+ - examples/auto_filter.xlsx
267
274
  - examples/basic_charts.rb
268
275
  - examples/chart_colors.rb
269
276
  - examples/conditional_formatting/example_conditional_formatting.rb
@@ -296,10 +303,27 @@ files:
296
303
  - examples/skydrive/axlsx.xlsx
297
304
  - examples/skydrive/real_example.rb
298
305
  - examples/sprk2012/basics.rb
306
+ - examples/sprk2012/basics.xlsx
307
+ - examples/sprk2012/gravatar.jpeg
308
+ - examples/sprk2012/hair_club.jpg
299
309
  - examples/sprk2012/images.rb
310
+ - examples/sprk2012/images.xlsx
311
+ - examples/sprk2012/line_chart.rb
312
+ - examples/sprk2012/line_chart.xlsx
313
+ - examples/sprk2012/Screen Shot 2012-09-11 at 10.42.06 PM.png
314
+ - examples/sprk2012/Screen Shot 2012-09-11 at 11.07.48 PM.png
315
+ - examples/sprk2012/Screen Shot 2012-09-11 at 8.31.50 PM.png
316
+ - examples/sprk2012/Screen Shot 2012-09-11 at 9.23.27 PM.png
317
+ - examples/sprk2012/Screen Shot 2012-09-11 at 9.32.06 PM.png
318
+ - examples/sprk2012/Screen Shot 2012-09-11 at 9.33.35 PM.png
319
+ - examples/sprk2012/Screen Shot 2012-09-11 at 9.46.44 PM.png
320
+ - examples/sprk2012/Screen Shot 2012-09-12 at 5.07.23 PM.png
321
+ - examples/sprk2012/sprk2012.key
300
322
  - examples/sprk2012/styles.rb
323
+ - examples/sprk2012/styles.xlsx
324
+ - examples/styles.rb
325
+ - examples/styles.xlsx
301
326
  - examples/two_cell_anchor_image.rb
302
- - examples/~$extractive.xlsx
303
327
  - LICENSE
304
328
  - README.md
305
329
  - Rakefile
@@ -376,7 +400,9 @@ files:
376
400
  - test/workbook/tc_defined_name.rb
377
401
  - test/workbook/tc_shared_strings_table.rb
378
402
  - test/workbook/tc_workbook.rb
379
- - test/workbook/worksheet/table/tc_table.rb
403
+ - test/workbook/worksheet/auto_filter/tc_auto_filter.rb
404
+ - test/workbook/worksheet/auto_filter/tc_filter_column.rb
405
+ - test/workbook/worksheet/auto_filter/tc_filters.rb
380
406
  - test/workbook/worksheet/tc_cell.rb
381
407
  - test/workbook/worksheet/tc_cfvo.rb
382
408
  - test/workbook/worksheet/tc_col.rb
@@ -389,14 +415,19 @@ files:
389
415
  - test/workbook/worksheet/tc_date_time_converter.rb
390
416
  - test/workbook/worksheet/tc_icon_set.rb
391
417
  - test/workbook/worksheet/tc_page_margins.rb
418
+ - test/workbook/worksheet/tc_page_set_up_pr.rb
392
419
  - test/workbook/worksheet/tc_page_setup.rb
393
420
  - test/workbook/worksheet/tc_pane.rb
394
421
  - test/workbook/worksheet/tc_print_options.rb
395
422
  - test/workbook/worksheet/tc_protected_range.rb
396
423
  - test/workbook/worksheet/tc_row.rb
397
424
  - test/workbook/worksheet/tc_selection.rb
425
+ - test/workbook/worksheet/tc_sheet_calc_pr.rb
426
+ - test/workbook/worksheet/tc_sheet_pr.rb
398
427
  - test/workbook/worksheet/tc_sheet_protection.rb
399
428
  - test/workbook/worksheet/tc_sheet_view.rb
429
+ - test/workbook/worksheet/tc_table.rb
430
+ - test/workbook/worksheet/tc_table_style_info.rb
400
431
  - test/workbook/worksheet/tc_worksheet.rb
401
432
  - test/workbook/worksheet/tc_worksheet_hyperlink.rb
402
433
  homepage: https://github.com/randym/axlsx
@@ -419,7 +450,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
419
450
  version: '0'
420
451
  segments:
421
452
  - 0
422
- hash: 1228635287654264801
453
+ hash: 2473429157853002876
423
454
  requirements: []
424
455
  rubyforge_project:
425
456
  rubygems_version: 1.8.24
@@ -498,7 +529,9 @@ test_files:
498
529
  - test/workbook/tc_defined_name.rb
499
530
  - test/workbook/tc_shared_strings_table.rb
500
531
  - test/workbook/tc_workbook.rb
501
- - test/workbook/worksheet/table/tc_table.rb
532
+ - test/workbook/worksheet/auto_filter/tc_auto_filter.rb
533
+ - test/workbook/worksheet/auto_filter/tc_filter_column.rb
534
+ - test/workbook/worksheet/auto_filter/tc_filters.rb
502
535
  - test/workbook/worksheet/tc_cell.rb
503
536
  - test/workbook/worksheet/tc_cfvo.rb
504
537
  - test/workbook/worksheet/tc_col.rb
@@ -511,14 +544,19 @@ test_files:
511
544
  - test/workbook/worksheet/tc_date_time_converter.rb
512
545
  - test/workbook/worksheet/tc_icon_set.rb
513
546
  - test/workbook/worksheet/tc_page_margins.rb
547
+ - test/workbook/worksheet/tc_page_set_up_pr.rb
514
548
  - test/workbook/worksheet/tc_page_setup.rb
515
549
  - test/workbook/worksheet/tc_pane.rb
516
550
  - test/workbook/worksheet/tc_print_options.rb
517
551
  - test/workbook/worksheet/tc_protected_range.rb
518
552
  - test/workbook/worksheet/tc_row.rb
519
553
  - test/workbook/worksheet/tc_selection.rb
554
+ - test/workbook/worksheet/tc_sheet_calc_pr.rb
555
+ - test/workbook/worksheet/tc_sheet_pr.rb
520
556
  - test/workbook/worksheet/tc_sheet_protection.rb
521
557
  - test/workbook/worksheet/tc_sheet_view.rb
558
+ - test/workbook/worksheet/tc_table.rb
559
+ - test/workbook/worksheet/tc_table_style_info.rb
522
560
  - test/workbook/worksheet/tc_worksheet.rb
523
561
  - test/workbook/worksheet/tc_worksheet_hyperlink.rb
524
562
  has_rdoc: axlsx
Binary file
@@ -1,35 +0,0 @@
1
- module Axlsx
2
-
3
- #This class represents an auto filter range in a worksheet
4
- class AutoFilter
5
-
6
- # creates a new Autofilter object
7
- # @param [Worksheet] worksheet
8
- def initialize(worksheet)
9
- raise ArgumentError, 'you must provide a worksheet' unless worksheet.is_a?(Worksheet)
10
- @worksheet = worksheet
11
- end
12
-
13
- attr_reader :worksheet
14
-
15
- # The range the autofilter should be applied to.
16
- # This should be a string like 'A1:B8'
17
- # @return [String]
18
- attr_accessor :range
19
-
20
- # the formula for the defined name required for this auto filter
21
- # @return [String]
22
- def defined_name
23
- return unless range
24
- Axlsx.cell_range(range.split(':').collect { |name| worksheet.name_to_cell(name)})
25
- end
26
-
27
- # serialize the object
28
- # @return [String]
29
- def to_xml_string(str='')
30
- return unless range
31
- str << "<autoFilter ref='#{range}'></autoFilter>"
32
- end
33
-
34
- end
35
- end