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
data/History.txt ADDED
File without changes
data/README.txt ADDED
@@ -0,0 +1,133 @@
1
+ surpass
2
+ by Ana Nelson, based on original Python code by Roman V. Kiseliov
3
+ http://launchpad.net/surpass
4
+
5
+ == DESCRIPTION:
6
+
7
+ Surpass is writing (and eventually reading) excel workbooks in pure Ruby. Surpass is based on xlwt (and pyExcelerator).
8
+
9
+ == REQUIREMENTS:
10
+
11
+ Ruby 1.8.6 (C or JRuby)
12
+
13
+ == INSTALL:
14
+
15
+ bones installation:
16
+ sudo rake gem:install
17
+
18
+ == Documentation
19
+
20
+ See surpass-manual.pdf
21
+
22
+ == LICENSE:
23
+
24
+ Portions Copyright (c) 2008-9, Ana Nelson
25
+ All rights reserved.
26
+
27
+ Redistribution and use in source and binary forms, with or without
28
+ modification, are permitted provided that the following conditions are
29
+ met:
30
+
31
+ * Redistributions of source code must retain the above copyright
32
+ notice, this list of conditions and the following disclaimer.
33
+
34
+ * Redistributions in binary form must reproduce the above copyright
35
+ notice, this list of conditions and the following disclaimer in the
36
+ documentation and/or other materials provided with the distribution.
37
+
38
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
39
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
40
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
41
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
42
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
43
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
44
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
45
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
46
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
47
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
48
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
49
+
50
+
51
+
52
+ Surpass is a Ruby port of Python projects xlwt and pyExcelerator, whose
53
+ licenses are below.
54
+
55
+
56
+
57
+ Portions copyright © 2007, Stephen John Machin, Lingfo Pty Ltd
58
+ All rights reserved.
59
+
60
+ Redistribution and use in source and binary forms, with or without
61
+ modification, are permitted provided that the following conditions are met:
62
+
63
+ 1. Redistributions of source code must retain the above copyright notice,
64
+ this list of conditions and the following disclaimer.
65
+
66
+ 2. Redistributions in binary form must reproduce the above copyright notice,
67
+ this list of conditions and the following disclaimer in the documentation
68
+ and/or other materials provided with the distribution.
69
+
70
+ 3. None of the names of Stephen John Machin, Lingfo Pty Ltd and any
71
+ contributors may be used to endorse or promote products derived from this
72
+ software without specific prior written permission.
73
+
74
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
75
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
76
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
77
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
78
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
79
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
80
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
81
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
82
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
83
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
84
+ THE POSSIBILITY OF SUCH DAMAGE.
85
+
86
+
87
+ Copyright (C) 2005 Roman V. Kiseliov
88
+ All rights reserved.
89
+
90
+ Redistribution and use in source and binary forms, with or without
91
+ modification, are permitted provided that the following conditions
92
+ are met:
93
+
94
+ 1. Redistributions of source code must retain the above copyright
95
+ notice, this list of conditions and the following disclaimer.
96
+
97
+ 2. Redistributions in binary form must reproduce the above copyright
98
+ notice, this list of conditions and the following disclaimer in
99
+ the documentation and/or other materials provided with the
100
+ distribution.
101
+
102
+ 3. All advertising materials mentioning features or use of this
103
+ software must display the following acknowledgment:
104
+ "This product includes software developed by
105
+ Roman V. Kiseliov <roman@kiseliov.ru>."
106
+
107
+ 4. Redistributions of any form whatsoever must retain the following
108
+ acknowledgment:
109
+ "This product includes software developed by
110
+ Roman V. Kiseliov <roman@kiseliov.ru>."
111
+
112
+ THIS SOFTWARE IS PROVIDED BY Roman V. Kiseliov ``AS IS'' AND ANY
113
+ EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
114
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
115
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Roman V. Kiseliov OR
116
+ ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
117
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
118
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
119
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
120
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
121
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
122
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
123
+ OF THE POSSIBILITY OF SUCH DAMAGE.
124
+
125
+ Roman V. Kiseliov
126
+ Russia
127
+ Kursk
128
+ Libknecht St., 4
129
+
130
+ +7(0712)56-09-83
131
+
132
+ <roman@kiseliov.ru>
133
+ Subject: pyExcelerator
data/Rakefile ADDED
@@ -0,0 +1,35 @@
1
+ # Look in the tasks/setup.rb file for the various options that can be
2
+ # configured in this Rakefile. The .rake files in the tasks directory
3
+ # are where the options are used.
4
+
5
+ begin
6
+ require 'bones'
7
+ Bones.setup
8
+ rescue LoadError
9
+ begin
10
+ load 'tasks/setup.rb'
11
+ rescue LoadError
12
+ raise RuntimeError, '### please install the "bones" gem ###'
13
+ end
14
+ end
15
+
16
+ ensure_in_path 'lib'
17
+ require 'surpass'
18
+
19
+ task :default => 'spec:run'
20
+
21
+ PROJ.name = 'surpass'
22
+ PROJ.authors = 'Ana Nelson'
23
+ PROJ.email = 'ana@ananelson.com'
24
+ PROJ.url = 'https://surpass.rubyforge.org'
25
+ PROJ.version = Surpass::VERSION
26
+ PROJ.rubyforge.name = 'surpass'
27
+
28
+ PROJ.ignore_file = '.bzrignore'
29
+
30
+ PROJ.spec.opts << '--color'
31
+
32
+ PROJ.exclude = %w{.bzr webby}
33
+
34
+
35
+ PROJ.rdoc.format = 'darkfish'
@@ -0,0 +1,25 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ book = Workbook.new
5
+ s = book.add_sheet('0')
6
+
7
+ colcount = 200 + 1
8
+ rowcount = 6000 + 1
9
+
10
+ start = Time.now
11
+ puts "starting at #{start.to_s}"
12
+
13
+ colcount.times do |c|
14
+ rowcount.times do |r|
15
+ s.write(r, c, "BIG")
16
+ end
17
+ end
18
+
19
+ t = Time.now - start
20
+ puts "time elapsed (writing data to workbook) #{t.to_s}"
21
+
22
+ book.save(__FILE__.gsub(/rb$/, "xls"))
23
+
24
+ t = Time.now - start
25
+ puts "time elapsed (writing workbook to file) #{t.to_s}"
@@ -0,0 +1,28 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ strings = File.read("spec/data/random-strings.txt").split("\n")
5
+
6
+ book = Workbook.new
7
+ s = book.add_sheet('0')
8
+
9
+ colcount = 100 + 1
10
+ rowcount = 100 + 1
11
+
12
+ start = Time.now
13
+ puts "starting at #{start.to_s}"
14
+
15
+ colcount.times do |c|
16
+ rowcount.times do |r|
17
+ i = c * rowcount + r
18
+ s.write(r, c, strings[i])
19
+ end
20
+ end
21
+
22
+ t = Time.now - start
23
+ puts "time elapsed (writing data to workbook) #{t.to_s}"
24
+
25
+ book.save(__FILE__.gsub(/rb$/, "xls"))
26
+
27
+ t = Time.now - start
28
+ puts "time elapsed (writing workbook to file) #{t.to_s}"
@@ -0,0 +1,34 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ font0 = Font.new
5
+ font0.name = 'Times New Roman'
6
+ font0.struck_out = true
7
+ font0.bold = true
8
+
9
+ style0 = StyleFormat.new
10
+ style0.font = font0
11
+
12
+
13
+ book = Workbook.new
14
+ ws0 = book.add_sheet('0')
15
+
16
+ ws0.write(1, 1, 'Test', style0)
17
+
18
+ 0.upto(0x53) do |i|
19
+ borders = Borders.new
20
+ borders.left = i
21
+ borders.right = i
22
+ borders.top = i
23
+ borders.bottom = i
24
+
25
+ style = StyleFormat.new
26
+ style.borders = borders
27
+
28
+ ws0.write(i, 2, '', style)
29
+ ws0.write(i, 3, hex(i), style0)
30
+ end
31
+
32
+ ws0.write_merge(5, 8, 6, 10, "")
33
+
34
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,16 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ book = Workbook.new
5
+ ws = book.add_sheet('Hey, Dude')
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(1, i, 'Test')
13
+ ws.set_column_width(i, i)
14
+ end
15
+
16
+ book.save(__FILE__.gsub(/rb$/, "xls"))
data/examples/dates.rb ADDED
@@ -0,0 +1,31 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ book = Workbook.new
5
+ ws = book.add_sheet('Hey, Dude')
6
+
7
+ formats = [
8
+ 'M/D/YY',
9
+ 'D-MMM-YY',
10
+ 'D-MMM',
11
+ 'MMM-YY',
12
+ 'h:mm AM/PM',
13
+ 'h:mm:ss AM/PM',
14
+ 'h:mm',
15
+ 'h:mm:ss',
16
+ 'M/D/YY h:mm',
17
+ 'mm:ss',
18
+ '[h]:mm:ss',
19
+ 'mm:ss.0',
20
+ ]
21
+
22
+ formats.each_with_index do |f, i|
23
+ ws.write(i, 0, f)
24
+
25
+ style = StyleFormat.new
26
+ style.number_format_string = f
27
+
28
+ ws.write(i, 4, Time.now, style)
29
+ end
30
+
31
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,23 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ style0 = StyleFormat.new(:font_name => 'Times New Roman', :font_struck_out => true, :font_bold => true)
5
+
6
+ book = Workbook.new
7
+ ws0 = book.add_sheet('0')
8
+
9
+ ws0.write(1, 1, 'Test', style0)
10
+
11
+ (0...0x53).each do |i|
12
+ style = StyleFormat.new(:font_name => 'Arial', :font_color_index => i, :font_outline => true)
13
+
14
+ borders = Borders.new
15
+ borders.left = i
16
+
17
+ style.borders = borders
18
+
19
+ ws0.write(i, 2, 'colour', style)
20
+ ws0.write(i, 3, hex(i), style0)
21
+ end
22
+
23
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,9 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ book = Workbook.new
5
+ ws = book.add_sheet
6
+
7
+ ws.write(0, 0, "Hello World")
8
+
9
+ book.save(__FILE__.gsub(/rb$/, "xls"))
data/examples/image.rb ADDED
@@ -0,0 +1,10 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+
5
+ book = Workbook.new
6
+ ws = book.add_sheet('Image')
7
+ ws.insert_bitmap('examples/python.bmp', 2, 2)
8
+ ws.insert_bitmap('examples/python.bmp', 15, 2)
9
+
10
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,36 @@
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
+ al = Alignment.new
16
+ al.horz = Alignment::HORZ_CENTER
17
+ al.vert = Alignment::VERT_CENTER
18
+
19
+ style = StyleFormat.new
20
+ style.font = fnt
21
+ style.borders = borders
22
+ style.alignment = al
23
+
24
+
25
+ book = Workbook.new
26
+ ws0 = book.add_sheet
27
+ ws1 = book.add_sheet
28
+ ws2 = book.add_sheet
29
+
30
+ (0...0x200).step(2) do |i|
31
+ ws0.write_merge(i, i+1, 1, 5, "test #{i}", style)
32
+ ws1.write_merge(i, i, 1, 7, "test #{i}", style)
33
+ ws2.write_merge(i, i+1, 1, 7 + (i%10), "test #{i}", style)
34
+ end
35
+
36
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,27 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ book = Workbook.new
5
+ ws0 = book.add_sheet
6
+
7
+
8
+ fnt = Font.new
9
+ fnt.name = 'Arial'
10
+ fnt.colour_index = 4
11
+ fnt.bold = true
12
+
13
+ borders = Borders.new
14
+ borders.left = 6
15
+ borders.right = 6
16
+ borders.top = 6
17
+ borders.bottom = 6
18
+
19
+ style = StyleFormat.new
20
+ style.font = fnt
21
+ style.borders = borders
22
+
23
+ ws0.write_merge(3, 3, 1, 5, 'test1', style)
24
+ ws0.write_merge(4, 10, 1, 5, 'test2', style)
25
+ ws0.set_column_width(1, 0x0d00)
26
+
27
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,99 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ book = Workbook.new
5
+ ws0 = book.add_sheet
6
+
7
+ fnt1 = Font.new
8
+ fnt1.name = 'Verdana'
9
+ fnt1.bold = true
10
+ fnt1.height = 18*0x14
11
+
12
+ pat1 = Pattern.new
13
+ pat1.pattern = Pattern::SOLID_PATTERN
14
+ pat1.pattern_fore_colour = 0x16
15
+
16
+ brd1 = Borders.new
17
+ brd1.left = 0x06
18
+ brd1.right = 0x06
19
+ brd1.top = 0x06
20
+ brd1.bottom = 0x06
21
+
22
+ fnt2 = Font.new
23
+ fnt2.name = 'Verdana'
24
+ fnt2.bold = true
25
+ fnt2.height = 14*0x14
26
+
27
+ brd2 = Borders.new
28
+ brd2.left = 0x01
29
+ brd2.right = 0x01
30
+ brd2.top = 0x01
31
+ brd2.bottom = 0x01
32
+
33
+ pat2 = Pattern.new
34
+ pat2.pattern = Pattern::SOLID_PATTERN
35
+ pat2.pattern_fore_colour = 0x01F
36
+
37
+ fnt3 = Font.new
38
+ fnt3.name = 'Verdana'
39
+ fnt3.bold = true
40
+ fnt3.italic = true
41
+ fnt3.height = 12*0x14
42
+
43
+ brd3 = Borders.new
44
+ brd3.left = 0x07
45
+ brd3.right = 0x07
46
+ brd3.top = 0x07
47
+ brd3.bottom = 0x07
48
+
49
+ fnt4 = Font.new
50
+
51
+ al1 = Alignment.new
52
+ al1.horz = Alignment::HORZ_CENTER
53
+ al1.vert = Alignment::VERT_CENTER
54
+
55
+ al2 = Alignment.new
56
+ al2.horz = Alignment::HORZ_RIGHT
57
+ al2.vert = Alignment::VERT_CENTER
58
+
59
+ al3 = Alignment.new
60
+ al3.horz = Alignment::HORZ_LEFT
61
+ al3.vert = Alignment::VERT_CENTER
62
+
63
+ style1 = StyleFormat.new
64
+ style1.font = fnt1
65
+ style1.alignment = al1
66
+ style1.pattern = pat1
67
+ style1.borders = brd1
68
+
69
+ style2 = StyleFormat.new
70
+ style2.font = fnt2
71
+ style2.alignment = al1
72
+ style2.pattern = pat2
73
+ style2.borders = brd2
74
+
75
+ style3 = StyleFormat.new
76
+ style3.font = fnt3
77
+ style3.alignment = al1
78
+ style3.pattern = pat2
79
+ style3.borders = brd3
80
+
81
+ price_style = StyleFormat.new
82
+ price_style.font = fnt4
83
+ price_style.alignment = al2
84
+ price_style.borders = brd3
85
+ price_style.number_format_string = '_(#,##0.00_) "money"'
86
+
87
+ ware_style = StyleFormat.new
88
+ ware_style.font = fnt4
89
+ ware_style.alignment = al3
90
+ ware_style.borders = brd3
91
+
92
+
93
+ ws0.merge(3, 3, 1, 5, style1)
94
+ ws0.merge(4, 10, 1, 6, style2)
95
+ ws0.merge(14, 16, 1, 7, style3)
96
+ ws0.set_column_width(1, 0x0d00)
97
+
98
+
99
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,55 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ book = Workbook.new
5
+ ws = book.add_sheet
6
+
7
+ fmts = [
8
+ 'General',
9
+ '0',
10
+ '0.00',
11
+ '#,##0',
12
+ '#,##0.00',
13
+ '"$"#,##0_);("$"#,##',
14
+ '"$"#,##0_);[Red]("$"#,##',
15
+ '"$"#,##0.00_);("$"#,##',
16
+ '"$"#,##0.00_);[Red]("$"#,##',
17
+ '0%',
18
+ '0.00%',
19
+ '0.00E+00',
20
+ '# ?/?',
21
+ '# ??/??',
22
+ 'M/D/YY',
23
+ 'D-MMM-YY',
24
+ 'D-MMM',
25
+ 'MMM-YY',
26
+ 'h:mm AM/PM',
27
+ 'h:mm:ss AM/PM',
28
+ 'h:mm',
29
+ 'h:mm:ss',
30
+ 'M/D/YY h:mm',
31
+ '_(#,##0_);(#,##0)',
32
+ '_(#,##0_);[Red](#,##0)',
33
+ '_(#,##0.00_);(#,##0.00)',
34
+ '_(#,##0.00_);[Red](#,##0.00)',
35
+ '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',
36
+ '_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',
37
+ '_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',
38
+ '_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',
39
+ 'mm:ss',
40
+ '[h]:mm:ss',
41
+ 'mm:ss.0',
42
+ '##0.0E+0',
43
+ '@'
44
+ ]
45
+
46
+ fmts.each_with_index do |fmt, i|
47
+ ws.write(i, 0, fmt)
48
+
49
+ style = StyleFormat.new
50
+ style.number_format_string = fmt
51
+
52
+ ws.write(i, 4, -1278.9078, style)
53
+ end
54
+
55
+ book.save(__FILE__.gsub(/rb$/, "xls"))
@@ -0,0 +1,24 @@
1
+ require "rubygems"
2
+ require "surpass"
3
+
4
+ book = Workbook.new
5
+ ws = book.add_sheet
6
+
7
+ ws.write(0, 0, 1)
8
+ ws.write(1, 0, 1.23)
9
+ ws.write(2, 0, 12345678)
10
+ ws.write(3, 0, 123456.78)
11
+
12
+ ws.write(0, 1, -1)
13
+ ws.write(1, 1, -1.23)
14
+ ws.write(2, 1, -12345678)
15
+ ws.write(3, 1, -123456.78)
16
+
17
+ ws.write(0, 2, -17867868678687.0)
18
+ ws.write(1, 2, -1.23e-5)
19
+ ws.write(2, 2, -12345678.90780980)
20
+ ws.write(3, 2, -123456.78)
21
+
22
+ ws.write(0, 4, true)
23
+
24
+ book.save(__FILE__.gsub(/rb$/, "xls"))