surpass 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. data/History.txt +0 -0
  2. data/README.txt +133 -0
  3. data/Rakefile +35 -0
  4. data/examples/big-16mb.rb +25 -0
  5. data/examples/big-random-strings.rb +28 -0
  6. data/examples/blanks.rb +34 -0
  7. data/examples/col_width.rb +16 -0
  8. data/examples/dates.rb +31 -0
  9. data/examples/format.rb +23 -0
  10. data/examples/hello-world.rb +9 -0
  11. data/examples/image.rb +10 -0
  12. data/examples/merged.rb +36 -0
  13. data/examples/merged0.rb +27 -0
  14. data/examples/merged1.rb +99 -0
  15. data/examples/num_formats.rb +55 -0
  16. data/examples/numbers.rb +24 -0
  17. data/examples/outline.rb +110 -0
  18. data/examples/panes.rb +48 -0
  19. data/examples/protection.rb +132 -0
  20. data/examples/python.bmp +0 -0
  21. data/examples/row_styles.rb +16 -0
  22. data/examples/row_styles_empty.rb +15 -0
  23. data/examples/set_cell_and_range_style.rb +12 -0
  24. data/examples/wrapped-text.rb +13 -0
  25. data/examples/write_arrays.rb +16 -0
  26. data/examples/ws_props.rb +80 -0
  27. data/lib/biff_record.rb +2168 -0
  28. data/lib/bitmap.rb +218 -0
  29. data/lib/cell.rb +214 -0
  30. data/lib/chart.rb +16 -0
  31. data/lib/column.rb +40 -0
  32. data/lib/document.rb +406 -0
  33. data/lib/excel_formula.rb +6 -0
  34. data/lib/excel_magic.rb +1013 -0
  35. data/lib/formatting.rb +554 -0
  36. data/lib/row.rb +137 -0
  37. data/lib/style.rb +179 -0
  38. data/lib/surpass.rb +51 -0
  39. data/lib/utilities.rb +86 -0
  40. data/lib/workbook.rb +206 -0
  41. data/lib/worksheet.rb +561 -0
  42. data/spec/biff_record_spec.rb +268 -0
  43. data/spec/cell_spec.rb +56 -0
  44. data/spec/data/random-strings.txt +10000 -0
  45. data/spec/document_spec.rb +168 -0
  46. data/spec/excel_formula_spec.rb +0 -0
  47. data/spec/formatting_spec.rb +53 -0
  48. data/spec/reference/P-0508-0000507647-3280-5298.xls +0 -0
  49. data/spec/reference/all-cell-styles.bin +0 -0
  50. data/spec/reference/all-number-formats.bin +0 -0
  51. data/spec/reference/all-styles.bin +0 -0
  52. data/spec/reference/mini.xls +0 -0
  53. data/spec/row_spec.rb +19 -0
  54. data/spec/spec_helper.rb +10 -0
  55. data/spec/style_spec.rb +89 -0
  56. data/spec/utilities_spec.rb +57 -0
  57. data/spec/workbook_spec.rb +48 -0
  58. data/spec/worksheet_spec.rb +0 -0
  59. data/stats/cloc.txt +8 -0
  60. data/stats/rcov.txt +0 -0
  61. data/stats/specdoc.txt +158 -0
  62. data/surpass-manual-0-0-3.pdf +0 -0
  63. data/surpass.gemspec +34 -0
  64. data/tasks/ann.rake +80 -0
  65. data/tasks/bones.rake +20 -0
  66. data/tasks/excel.rake +6 -0
  67. data/tasks/gem.rake +201 -0
  68. data/tasks/git.rake +40 -0
  69. data/tasks/metrics.rake +42 -0
  70. data/tasks/notes.rake +27 -0
  71. data/tasks/post_load.rake +34 -0
  72. data/tasks/rdoc.rake +51 -0
  73. data/tasks/rubyforge.rake +55 -0
  74. data/tasks/setup.rb +292 -0
  75. data/tasks/spec.rake +54 -0
  76. data/tasks/svn.rake +47 -0
  77. data/tasks/test.rake +40 -0
  78. metadata +144 -0
@@ -0,0 +1,110 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ fnt = Font.new
5
+ fnt.name = 'Arial'
6
+ fnt.colour_index = 4
7
+ fnt.bold = true
8
+
9
+ borders = Borders.new
10
+ borders.left = 6
11
+ borders.right = 6
12
+ borders.top = 6
13
+ borders.bottom = 6
14
+
15
+ style = StyleFormat.new
16
+ style.font = fnt
17
+ style.borders = borders
18
+
19
+ book = Workbook.new
20
+
21
+ ws0 = book.add_sheet('Rows Outline')
22
+
23
+ ws0.write_merge(1, 1, 1, 5, 'test 1', style)
24
+ ws0.write_merge(2, 2, 1, 4, 'test 1', style)
25
+ ws0.write_merge(3, 3, 1, 3, 'test 2', style)
26
+ ws0.write_merge(4, 4, 1, 4, 'test 1', style)
27
+ ws0.write_merge(5, 5, 1, 4, 'test 3', style)
28
+ ws0.write_merge(6, 6, 1, 5, 'test 1', style)
29
+ ws0.write_merge(7, 7, 1, 5, 'test 4', style)
30
+ ws0.write_merge(8, 8, 1, 4, 'test 1', style)
31
+ ws0.write_merge(9, 9, 1, 3, 'test 5', style)
32
+
33
+ ws0.row(1).level = 1
34
+ ws0.row(2).level = 1
35
+ ws0.row(3).level = 2
36
+ ws0.row(4).level = 2
37
+ ws0.row(5).level = 2
38
+ ws0.row(6).level = 2
39
+ ws0.row(7).level = 2
40
+ ws0.row(8).level = 1
41
+ ws0.row(9).level = 1
42
+
43
+
44
+ ws1 = book.add_sheet('Columns Outline')
45
+
46
+ ws1.write_merge(1, 1, 1, 5, 'test 1', style)
47
+ ws1.write_merge(2, 2, 1, 4, 'test 1', style)
48
+ ws1.write_merge(3, 3, 1, 3, 'test 2', style)
49
+ ws1.write_merge(4, 4, 1, 4, 'test 1', style)
50
+ ws1.write_merge(5, 5, 1, 4, 'test 3', style)
51
+ ws1.write_merge(6, 6, 1, 5, 'test 1', style)
52
+ ws1.write_merge(7, 7, 1, 5, 'test 4', style)
53
+ ws1.write_merge(8, 8, 1, 4, 'test 1', style)
54
+ ws1.write_merge(9, 9, 1, 3, 'test 5', style)
55
+
56
+ ws1.col(1).level = 1
57
+ ws1.col(2).level = 1
58
+ ws1.col(3).level = 2
59
+ ws1.col(4).level = 2
60
+ ws1.col(5).level = 2
61
+ ws1.col(6).level = 2
62
+ ws1.col(7).level = 2
63
+ ws1.col(8).level = 1
64
+ ws1.col(9).level = 1
65
+
66
+
67
+ ws2 = book.add_sheet('Rows and Columns Outline')
68
+
69
+ ws2.write_merge(1, 1, 1, 5, 'test 1', style)
70
+ ws2.write_merge(2, 2, 1, 4, 'test 1', style)
71
+ ws2.write_merge(3, 3, 1, 3, 'test 2', style)
72
+ ws2.write_merge(4, 4, 1, 4, 'test 1', style)
73
+ ws2.write_merge(5, 5, 1, 4, 'test 3', style)
74
+ ws2.write_merge(6, 6, 1, 5, 'test 1', style)
75
+ ws2.write_merge(7, 7, 1, 5, 'test 4', style)
76
+ ws2.write_merge(8, 8, 1, 4, 'test 1', style)
77
+ ws2.write_merge(9, 9, 1, 3, 'test 5', style)
78
+
79
+ ws2.row(1).level = 1
80
+ ws2.row(2).level = 1
81
+ ws2.row(3).level = 2
82
+ ws2.row(4).level = 2
83
+ ws2.row(5).level = 2
84
+ ws2.row(6).level = 2
85
+ ws2.row(7).level = 2
86
+ ws2.row(8).level = 1
87
+ ws2.row(9).level = 1
88
+
89
+ ws2.write_merge(1, 1, 1, 5, 'test 1', style)
90
+ ws2.write_merge(2, 2, 1, 4, 'test 1', style)
91
+ ws2.write_merge(3, 3, 1, 3, 'test 2', style)
92
+ ws2.write_merge(4, 4, 1, 4, 'test 1', style)
93
+ ws2.write_merge(5, 5, 1, 4, 'test 3', style)
94
+ ws2.write_merge(6, 6, 1, 5, 'test 1', style)
95
+ ws2.write_merge(7, 7, 1, 5, 'test 4', style)
96
+ ws2.write_merge(8, 8, 1, 4, 'test 1', style)
97
+ ws2.write_merge(9, 9, 1, 3, 'test 5', style)
98
+
99
+ ws2.col(1).level = 1
100
+ ws2.col(2).level = 1
101
+ ws2.col(3).level = 2
102
+ ws2.col(4).level = 2
103
+ ws2.col(5).level = 2
104
+ ws2.col(6).level = 2
105
+ ws2.col(7).level = 2
106
+ ws2.col(8).level = 1
107
+ ws2.col(9).level = 1
108
+
109
+
110
+ book.save(__FILE__.gsub(/rb$/, "xls"))
data/examples/panes.rb ADDED
@@ -0,0 +1,48 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ # TODO this is broken in both Ruby and Python
5
+
6
+ book = Workbook.new
7
+ ws1 = book.add_sheet
8
+ ws2 = book.add_sheet
9
+ ws3 = book.add_sheet
10
+ ws4 = book.add_sheet
11
+ ws5 = book.add_sheet
12
+ ws6 = book.add_sheet
13
+
14
+ 0.upto(0x100) do |i|
15
+ ws1.write(i/0x10, i%0x10, i)
16
+ ws2.write(i/0x10, i%0x10, i)
17
+ ws3.write(i/0x10, i%0x10, i)
18
+ ws4.write(i/0x10, i%0x10, i)
19
+ ws5.write(i/0x10, i%0x10, i)
20
+ ws6.write(i/0x10, i%0x10, i)
21
+ end
22
+
23
+ ws1.panes_frozen = true
24
+ ws1.horz_split_pos = 2
25
+
26
+ ws2.panes_frozen = true
27
+ ws2.vert_split_pos = 2
28
+
29
+ ws3.panes_frozen = true
30
+ ws3.horz_split_pos = 1
31
+ ws3.vert_split_pos = 1
32
+
33
+ ws4.panes_frozen = false
34
+ ws4.horz_split_pos = 12
35
+ ws4.horz_split_first_visible = 2
36
+
37
+ ws5.panes_frozen = false
38
+ ws5.vert_split_pos = 40
39
+ ws4.vert_split_first_visible = 2
40
+
41
+ ws6.panes_frozen = false
42
+ ws6.horz_split_pos = 12
43
+ ws4.horz_split_first_visible = 2
44
+ ws6.vert_split_pos = 40
45
+ ws4.vert_split_first_visible = 2
46
+
47
+ book.save(__FILE__.gsub(/rb$/, "xls"))
48
+
@@ -0,0 +1,132 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ fnt = Font.new
5
+ fnt.name = 'Arial'
6
+ fnt.colour_index = 4
7
+ fnt.bold = true
8
+
9
+ borders = Borders.new
10
+ borders.left = 6
11
+ borders.right = 6
12
+ borders.top = 6
13
+ borders.bottom = 6
14
+
15
+ style = StyleFormat.new
16
+ style.font = fnt
17
+ style.borders = borders
18
+
19
+ book = Workbook.new
20
+
21
+ ws0 = book.add_sheet('Rows Outline')
22
+
23
+ ws0.write_merge(1, 1, 1, 5, 'test 1', style)
24
+ ws0.write_merge(2, 2, 1, 4, 'test 1', style)
25
+ ws0.write_merge(3, 3, 1, 3, 'test 2', style)
26
+ ws0.write_merge(4, 4, 1, 4, 'test 1', style)
27
+ ws0.write_merge(5, 5, 1, 4, 'test 3', style)
28
+ ws0.write_merge(6, 6, 1, 5, 'test 1', style)
29
+ ws0.write_merge(7, 7, 1, 5, 'test 4', style)
30
+ ws0.write_merge(8, 8, 1, 4, 'test 1', style)
31
+ ws0.write_merge(9, 9, 1, 3, 'test 5', style)
32
+
33
+ ws0.row(1).level = 1
34
+ ws0.row(2).level = 1
35
+ ws0.row(3).level = 2
36
+ ws0.row(4).level = 2
37
+ ws0.row(5).level = 2
38
+ ws0.row(6).level = 2
39
+ ws0.row(7).level = 2
40
+ ws0.row(8).level = 1
41
+ ws0.row(9).level = 1
42
+
43
+
44
+ ws1 = book.add_sheet('Columns Outline')
45
+
46
+ ws1.write_merge(1, 1, 1, 5, 'test 1', style)
47
+ ws1.write_merge(2, 2, 1, 4, 'test 1', style)
48
+ ws1.write_merge(3, 3, 1, 3, 'test 2', style)
49
+ ws1.write_merge(4, 4, 1, 4, 'test 1', style)
50
+ ws1.write_merge(5, 5, 1, 4, 'test 3', style)
51
+ ws1.write_merge(6, 6, 1, 5, 'test 1', style)
52
+ ws1.write_merge(7, 7, 1, 5, 'test 4', style)
53
+ ws1.write_merge(8, 8, 1, 4, 'test 1', style)
54
+ ws1.write_merge(9, 9, 1, 3, 'test 5', style)
55
+
56
+ ws1.col(1).level = 1
57
+ ws1.col(2).level = 1
58
+ ws1.col(3).level = 2
59
+ ws1.col(4).level = 2
60
+ ws1.col(5).level = 2
61
+ ws1.col(6).level = 2
62
+ ws1.col(7).level = 2
63
+ ws1.col(8).level = 1
64
+ ws1.col(9).level = 1
65
+
66
+
67
+ ws2 = book.add_sheet('Rows and Columns Outline')
68
+
69
+ ws2.write_merge(1, 1, 1, 5, 'test 1', style)
70
+ ws2.write_merge(2, 2, 1, 4, 'test 1', style)
71
+ ws2.write_merge(3, 3, 1, 3, 'test 2', style)
72
+ ws2.write_merge(4, 4, 1, 4, 'test 1', style)
73
+ ws2.write_merge(5, 5, 1, 4, 'test 3', style)
74
+ ws2.write_merge(6, 6, 1, 5, 'test 1', style)
75
+ ws2.write_merge(7, 7, 1, 5, 'test 4', style)
76
+ ws2.write_merge(8, 8, 1, 4, 'test 1', style)
77
+ ws2.write_merge(9, 9, 1, 3, 'test 5', style)
78
+
79
+ ws2.row(1).level = 1
80
+ ws2.row(2).level = 1
81
+ ws2.row(3).level = 2
82
+ ws2.row(4).level = 2
83
+ ws2.row(5).level = 2
84
+ ws2.row(6).level = 2
85
+ ws2.row(7).level = 2
86
+ ws2.row(8).level = 1
87
+ ws2.row(9).level = 1
88
+
89
+ ws2.write_merge(1, 1, 1, 5, 'test 1', style)
90
+ ws2.write_merge(2, 2, 1, 4, 'test 1', style)
91
+ ws2.write_merge(3, 3, 1, 3, 'test 2', style)
92
+ ws2.write_merge(4, 4, 1, 4, 'test 1', style)
93
+ ws2.write_merge(5, 5, 1, 4, 'test 3', style)
94
+ ws2.write_merge(6, 6, 1, 5, 'test 1', style)
95
+ ws2.write_merge(7, 7, 1, 5, 'test 4', style)
96
+ ws2.write_merge(8, 8, 1, 4, 'test 1', style)
97
+ ws2.write_merge(9, 9, 1, 3, 'test 5', style)
98
+
99
+ ws2.col(1).level = 1
100
+ ws2.col(2).level = 1
101
+ ws2.col(3).level = 2
102
+ ws2.col(4).level = 2
103
+ ws2.col(5).level = 2
104
+ ws2.col(6).level = 2
105
+ ws2.col(7).level = 2
106
+ ws2.col(8).level = 1
107
+ ws2.col(9).level = 1
108
+
109
+
110
+ ws0.protect = true
111
+ ws0.wnd_protect = true
112
+ ws0.obj_protect = true
113
+ ws0.scen_protect = true
114
+ ws0.password = "123456"
115
+
116
+ ws1.protect = true
117
+ ws1.wnd_protect = true
118
+ ws1.obj_protect = true
119
+ ws1.scen_protect = true
120
+ ws1.password = "abcdefghij"
121
+
122
+ ws2.protect = true
123
+ ws2.wnd_protect = true
124
+ ws2.obj_protect = true
125
+ ws2.scen_protect = true
126
+ ws2.password = "ok"
127
+
128
+ book.protect = true
129
+ book.wnd_protect = true
130
+ book.obj_protect = true
131
+
132
+ book.save(__FILE__.gsub(/rb$/, "xls"))
Binary file
@@ -0,0 +1,16 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ book = Workbook.new
5
+ ws = book.add_sheet
6
+
7
+ (6..80).each do |i|
8
+ fnt = Font.new
9
+ fnt.height = i*20
10
+ style = StyleFormat.new
11
+ style.font = fnt
12
+ ws.write(i, 1, 'Test')
13
+ ws.row(i).style = style
14
+ end
15
+
16
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,15 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ book = Workbook.new
5
+ ws = book.add_sheet
6
+
7
+ (6..80).each do |i|
8
+ fnt = Font.new
9
+ fnt.height = i*20
10
+ style = StyleFormat.new
11
+ style.font = fnt
12
+ ws.row(i).style = style
13
+ end
14
+
15
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,12 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ book = Workbook.new
5
+ s = book.add_sheet
6
+
7
+ s.write_arrays([%w{a b c d e}, %w{F G H I J}, %w{k l m n o}])
8
+
9
+ s.set_cell_style(2, 2, StyleFormat.new(:font_color => "yellow"))
10
+ s.set_range_style(0..1, 1..2, StyleFormat.new(:font_color => "purple"))
11
+
12
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,13 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
5
+
6
+ wrapped_text_format = StyleFormat.new(:text_wrap => true, :text_align => 'justify')
7
+
8
+ book = Workbook.new
9
+ sheet = book.add_sheet('Wrapped Text')
10
+ sheet.set_column_width(0, 40)
11
+ sheet.write(0, 0, text, wrapped_text_format)
12
+
13
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,16 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ font0 = Font.new
5
+ font0.name = 'Times New Roman'
6
+
7
+ style0 = StyleFormat.new
8
+ style0.font = font0
9
+
10
+
11
+ book = Workbook.new
12
+ s = book.add_sheet
13
+
14
+ s.write_array_to_column(methods.sort, 0, 0, style0)
15
+
16
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,80 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ props = \
5
+ [
6
+ 'name',
7
+ 'parent',
8
+ 'rows',
9
+ 'cols',
10
+ 'merged_ranges',
11
+ 'bmp_rec',
12
+ 'show_formulas',
13
+ 'show_grid',
14
+ 'show_headers',
15
+ 'panes_frozen',
16
+ 'show_empty_as_zero',
17
+ 'auto_colour_grid',
18
+ 'cols_right_to_left',
19
+ 'show_outline',
20
+ 'remove_splits',
21
+ 'selected',
22
+ 'page_preview',
23
+ 'first_visible_row',
24
+ 'first_visible_col',
25
+ 'grid_colour',
26
+ 'preview_magn',
27
+ 'normal_magn',
28
+ 'show_auto_page_breaks',
29
+ 'dialogue_sheet',
30
+ 'auto_style_outline',
31
+ 'outline_below',
32
+ 'outline_right',
33
+ 'fit_num_pages',
34
+ 'show_row_outline',
35
+ 'show_col_outline',
36
+ 'alt_expr_eval',
37
+ 'alt_formula_entries',
38
+ 'row_default_height',
39
+ 'col_default_width',
40
+ 'calc_mode',
41
+ 'calc_count',
42
+ 'save_recalc',
43
+ 'print_headers',
44
+ 'print_grid',
45
+ 'grid_set',
46
+ 'vert_page_breaks',
47
+ 'horz_page_breaks',
48
+ 'header_str',
49
+ 'footer_str',
50
+ 'print_centered_vert',
51
+ 'print_centered_horz',
52
+ 'left_margin',
53
+ 'right_margin',
54
+ 'top_margin',
55
+ 'bottom_margin',
56
+ 'paper_size_code',
57
+ 'print_scaling',
58
+ 'start_page_number',
59
+ 'fit_width_to_pages',
60
+ 'fit_height_to_pages',
61
+ 'print_in_rows',
62
+ 'portrait',
63
+ 'print_not_colour',
64
+ 'print_draft',
65
+ 'print_notes',
66
+ 'print_notes_at_end',
67
+ 'print_omit_errors',
68
+ 'print_hres',
69
+ 'print_vres',
70
+ 'header_margin',
71
+ 'footer_margin',
72
+ 'copies_num',
73
+ ]
74
+
75
+ book = Workbook.new
76
+ sheet = book.add_sheet('sheet')
77
+
78
+ props.each do |p|
79
+ puts "#{p} #{sheet.send(p.to_sym)}"
80
+ end