ruby-spreadsheet 0.6.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/.document +5 -0
  2. data/GUIDE.txt +267 -0
  3. data/Gemfile +12 -0
  4. data/Gemfile.lock +20 -0
  5. data/History.txt +307 -0
  6. data/LICENSE.txt +619 -0
  7. data/README.txt +91 -0
  8. data/Rakefile +53 -0
  9. data/VERSION +1 -0
  10. data/bin/xlsopcodes +18 -0
  11. data/lib/parseexcel.rb +27 -0
  12. data/lib/parseexcel/parseexcel.rb +75 -0
  13. data/lib/parseexcel/parser.rb +11 -0
  14. data/lib/spreadsheet.rb +79 -0
  15. data/lib/spreadsheet/column.rb +71 -0
  16. data/lib/spreadsheet/compatibility.rb +23 -0
  17. data/lib/spreadsheet/datatypes.rb +110 -0
  18. data/lib/spreadsheet/encodings.rb +46 -0
  19. data/lib/spreadsheet/excel.rb +88 -0
  20. data/lib/spreadsheet/excel/error.rb +26 -0
  21. data/lib/spreadsheet/excel/internals.rb +386 -0
  22. data/lib/spreadsheet/excel/internals/biff5.rb +17 -0
  23. data/lib/spreadsheet/excel/internals/biff8.rb +19 -0
  24. data/lib/spreadsheet/excel/offset.rb +41 -0
  25. data/lib/spreadsheet/excel/reader.rb +1173 -0
  26. data/lib/spreadsheet/excel/reader/biff5.rb +22 -0
  27. data/lib/spreadsheet/excel/reader/biff8.rb +193 -0
  28. data/lib/spreadsheet/excel/row.rb +92 -0
  29. data/lib/spreadsheet/excel/sst_entry.rb +46 -0
  30. data/lib/spreadsheet/excel/workbook.rb +80 -0
  31. data/lib/spreadsheet/excel/worksheet.rb +100 -0
  32. data/lib/spreadsheet/excel/writer.rb +1 -0
  33. data/lib/spreadsheet/excel/writer/biff8.rb +75 -0
  34. data/lib/spreadsheet/excel/writer/format.rb +253 -0
  35. data/lib/spreadsheet/excel/writer/workbook.rb +652 -0
  36. data/lib/spreadsheet/excel/writer/worksheet.rb +948 -0
  37. data/lib/spreadsheet/font.rb +92 -0
  38. data/lib/spreadsheet/format.rb +177 -0
  39. data/lib/spreadsheet/formula.rb +9 -0
  40. data/lib/spreadsheet/helpers.rb +11 -0
  41. data/lib/spreadsheet/link.rb +43 -0
  42. data/lib/spreadsheet/row.rb +132 -0
  43. data/lib/spreadsheet/workbook.rb +120 -0
  44. data/lib/spreadsheet/worksheet.rb +279 -0
  45. data/lib/spreadsheet/writer.rb +30 -0
  46. data/ruby-spreadsheet.gemspec +126 -0
  47. data/test/data/test_changes.xls +0 -0
  48. data/test/data/test_copy.xls +0 -0
  49. data/test/data/test_datetime.xls +0 -0
  50. data/test/data/test_empty.xls +0 -0
  51. data/test/data/test_formula.xls +0 -0
  52. data/test/data/test_missing_row.xls +0 -0
  53. data/test/data/test_version_excel5.xls +0 -0
  54. data/test/data/test_version_excel95.xls +0 -0
  55. data/test/data/test_version_excel97.xls +0 -0
  56. data/test/excel/row.rb +35 -0
  57. data/test/excel/writer/worksheet.rb +23 -0
  58. data/test/font.rb +163 -0
  59. data/test/integration.rb +1281 -0
  60. data/test/row.rb +33 -0
  61. data/test/suite.rb +14 -0
  62. data/test/workbook.rb +21 -0
  63. data/test/worksheet.rb +80 -0
  64. metadata +203 -0
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/GUIDE.txt ADDED
@@ -0,0 +1,267 @@
1
+ = Getting Started with Spreadsheet
2
+ This guide is meant to get you started using Spreadsheet. By the end of it,
3
+ you should be able to read and write Spreadsheets.
4
+
5
+
6
+ == Reading is easy!
7
+ First, make sure all that code is loaded:
8
+
9
+ require 'spreadsheet'
10
+
11
+ Worksheets come in various Encodings. You need to tell Spreadsheet which
12
+ Encoding you want to deal with. The Default is UTF-8
13
+
14
+ Spreadsheet.client_encoding = 'UTF-8'
15
+
16
+ Let's open a workbook:
17
+
18
+ book = Spreadsheet.open '/path/to/an/excel-file.xls'
19
+
20
+ We can either access all the Worksheets in a Workbook...
21
+
22
+ book.worksheets
23
+
24
+ ...or access them by index or name (encoded in your client_encoding)
25
+
26
+ sheet1 = book.worksheet 0
27
+ sheet2 = Book.worksheet 'Sheet1'
28
+
29
+ Now you can either iterate over all rows that contain some data. A call to
30
+ Worksheet.each without argument will omit empty rows at the beginning of the
31
+ Worksheet:
32
+
33
+ sheet1.each do |row|
34
+ # do something interesting with a row
35
+ end
36
+
37
+ Or you can tell Worksheet how many rows should be omitted at the beginning.
38
+ The following starts at the 3rd row, regardless of whether or not it or the
39
+ preceding rows contain any data:
40
+
41
+ sheet2.each 2 do |row|
42
+ # do something interesting with a row
43
+ end
44
+
45
+ Or you can access rows directly, by their index (0-based):
46
+
47
+ row = sheet1.row(3)
48
+
49
+ To access the values stored in a Row, treat the Row like an Array.
50
+
51
+ row[0]
52
+
53
+ -> this will return a String, a Float, an Integer, a Formula, a Link or a Date
54
+ or DateTime object - or nil if the cell is empty.
55
+
56
+ More information about the formatting of a cell can be found in the Format
57
+ with the equivalent index
58
+
59
+ row.format 2
60
+
61
+
62
+ == Writing is easy
63
+ As before, make sure you have Spreadsheet required and the client_encoding
64
+ set. Then make a new Workbook:
65
+
66
+ book = Spreadsheet::Workbook.new
67
+
68
+ Add a Worksheet and you're good to go:
69
+
70
+ sheet1 = book.create_worksheet
71
+
72
+ This will create a Worksheet with the Name "Worksheet1". If you prefer another
73
+ name, you may do either of the following:
74
+
75
+ sheet2 = book.create_worksheet :name => 'My Second Worksheet'
76
+ sheet1.name = 'My First Worksheet'
77
+
78
+ Now, add data to the Worksheet, using either Worksheet#[]=,
79
+ Worksheet#update_row, or work directly on Row using any of the Array-Methods
80
+ that modify an Array in place:
81
+
82
+ sheet1.row(0).concat %w{Name Country Acknowlegement}
83
+ sheet1[1,0] = 'Japan'
84
+ row = sheet1.row(1)
85
+ row.push 'Creator of Ruby'
86
+ row.unshift 'Yukihiro Matsumoto'
87
+ sheet1.row(2).replace [ 'Daniel J. Berger', 'U.S.A.',
88
+ 'Author of original code for Spreadsheet::Excel' ]
89
+ sheet1.row(3).push 'Charles Lowe', 'Author of the ruby-ole Library'
90
+ sheet1.row(3).insert 1, 'Unknown'
91
+ sheet1.update_row 4, 'Hannes Wyss', 'Switzerland', 'Author'
92
+
93
+ Add some Formatting for flavour:
94
+
95
+ sheet1.row(0).height = 18
96
+
97
+ format = Spreadsheet::Format.new :color => :blue,
98
+ :weight => :bold,
99
+ :size => 18
100
+ sheet1.row(0).default_format = format
101
+
102
+ bold = Spreadsheet::Format.new :weight => :bold
103
+ 4.times do |x| sheet1.row(x + 1).set_format(0, bold) end
104
+
105
+ And finally, write the Excel File:
106
+
107
+ book.write '/path/to/output/excel-file.xls'
108
+
109
+
110
+ == Modifying an existing Document
111
+
112
+ Spreadsheet has some limited support for modifying an existing Document. This
113
+ is done by copying verbatim those parts of an Excel-document which Spreadsheet
114
+ can't modify (yet), recalculating relevant offsets, and writing the data that
115
+ can be changed.
116
+ Here's what should work:
117
+ * Adding, changing and deleting cells.
118
+ * You should be able to fill in Data to be evaluated by predefined Formulas
119
+ Limitations:
120
+ * Spreadsheet can only write BIFF8 (Excel97 and higher). The results of
121
+ modifying an earlier version of Excel are undefined.
122
+ * Spreadsheet does not modify Formatting at present. That means in particular
123
+ that if you set the Value of a Cell to a Date, it can only be read as a
124
+ Date if its Format was set correctly prior to the change.
125
+ * Although it is theoretically possible, it is not recommended to write the
126
+ resulting Document back to the same File/IO that it was read from.
127
+
128
+ And here's how it works:
129
+
130
+ book = Spreadsheet.open '/path/to/an/excel-file.xls'
131
+ sheet = book.worksheet 0
132
+ sheet.each do |row|
133
+ row[0] *= 2
134
+ end
135
+ book.write '/path/to/output/excel-file.xls'
136
+
137
+
138
+ == Date and DateTime
139
+ Excel does not know a separate Datatype for Dates. Instead it encodes Dates
140
+ into standard floating-point numbers and recognizes a Date-Cell by its
141
+ formatting-string:
142
+
143
+ row.format(3).number_format
144
+
145
+ Whenever a Cell's Format describes a Date or Time, Spreadsheet will give you
146
+ the decoded Date or DateTime value. Should you need to access the underlying
147
+ Float, you may do the following:
148
+
149
+ row.at(3)
150
+
151
+ If for some reason the Date-recognition fails, you may force Date-decoding:
152
+
153
+ row.date(3)
154
+ row.datetime(3)
155
+
156
+ When you set the value of a Cell to a Date, Time or DateTime, Spreadsheet will
157
+ try to set the cell's number-format to a corresponding value (one of Excel's
158
+ builtin formats). If you have already defined a Date- or DateTime-format,
159
+ Spreadsheet will use that instead. If a format has already been applied to
160
+ a particular Cell, Spreadsheet will leave it untouched:
161
+
162
+ row[4] = Date.new 1975, 8, 21
163
+ # -> assigns the builtin Date-Format: 'M/D/YY'
164
+ book.add_format Format.new(:number_format => 'DD.MM.YYYY hh:mm:ss')
165
+ row[5] = DateTime.new 2008, 10, 12, 11, 59
166
+ # -> assigns the added DateTime-Format: 'DD.MM.YYYY hh:mm:ss'
167
+ row.set_format 6, Format.new(:number_format => 'D-MMM-YYYY')
168
+ row[6] = Time.new 2008, 10, 12
169
+ # -> the Format of cell 6 is left unchanged.
170
+
171
+ == Outline (Grouping) and Hiding
172
+ Spreadsheet supports outline (grouping) and hiding functions from version
173
+ 0.6.5. In order to hide rows or columns, you can use 'hidden' property.
174
+ As for outline, 'outline_level' property is also available. You can use
175
+ both 'hidden' and 'outline_level' at the same time.
176
+
177
+ You can create a new file with outline and hiding rows and columns as
178
+ follows:
179
+
180
+ require 'spreadsheet'
181
+
182
+ # create a new book and sheet
183
+ book = Spreadsheet::Workbook.new
184
+ sheet = book.create_worksheet
185
+ 5.times {|j| 5.times {|i| sheet[j,i] = (i+1)*10**j}}
186
+
187
+ # column
188
+ sheet.column(2).hidden = true
189
+ sheet.column(3).hidden = true
190
+ sheet.column(2).outline_level = 1
191
+ sheet.column(3).outline_level = 1
192
+
193
+ # row
194
+ sheet.row(2).hidden = true
195
+ sheet.row(3).hidden = true
196
+ sheet.row(2).outline_level = 1
197
+ sheet.row(3).outline_level = 1
198
+
199
+ # save file
200
+ book.write 'out.xls'
201
+
202
+ Also you can read an existing file and change the hidden and outline
203
+ properties. Here is the example below:
204
+
205
+ require 'spreadsheet'
206
+
207
+ # read an existing file
208
+ file = ARGV[0]
209
+ book = Spreadsheet.open(file, 'rb')
210
+ sheet= book.worksheet(0)
211
+
212
+ # column
213
+ sheet.column(2).hidden = true
214
+ sheet.column(3).hidden = true
215
+ sheet.column(2).outline_level = 1
216
+ sheet.column(3).outline_level = 1
217
+
218
+ # row
219
+ sheet.row(2).hidden = true
220
+ sheet.row(3).hidden = true
221
+ sheet.row(2).outline_level = 1
222
+ sheet.row(3).outline_level = 1
223
+
224
+ # save file
225
+ book.write "out.xls"
226
+
227
+ Notes
228
+ * The outline_level should be under 8, which is due to the Excel data format.
229
+
230
+ == More about Encodings
231
+ Spreadsheet assumes it's running on Ruby 1.8 with Iconv-support. It is your
232
+ responsibility to handle Conversion Errors, or to prevent them e.g. by using
233
+ the Iconv Transliteration and Ignore flags:
234
+ Spreadsheet.client_encoding = 'LATIN1//TRANSLIT//IGNORE'
235
+
236
+
237
+ == Backward Compatibility
238
+ Spreadsheet is designed to be a drop-in replacement for both ParseExcel and
239
+ Spreadsheet::Excel. It provides a number of require-paths for backward
240
+ compatibility with its predecessors. If you have been working with ParseExcel,
241
+ you have probably used one or more of the following:
242
+
243
+ require 'parseexcel'
244
+ require 'parseexcel/parseexcel'
245
+ require 'parseexcel/parser'
246
+
247
+ Either of the above will define the ParseExcel.parse method as a facade to
248
+ Spreadsheet.open. Additionally, this will alter Spreadsheets behavior to define
249
+ the ParseExcel::Worksheet::Cell class and fill each parsed Row with instances
250
+ thereof, which in turn provide ParseExcel's Cell#to_s(encoding) and Cell#date
251
+ methods.
252
+ You will have to manually uninstall the parseexcel library.
253
+
254
+ If you are upgrading from Spreadsheet::Excel, you were probably using
255
+ Workbook#add_worksheet and Worksheet#write, write_row or write_column.
256
+ Use the following to load the code which provides them:
257
+
258
+ require 'spreadsheet/excel'
259
+
260
+ Again, you will have to manually uninstall the spreadsheet-excel library.
261
+
262
+ If you perform fancy formatting, you may run into trouble as the
263
+ Format implementation has changed considerably. If that is the case, please
264
+ drop me a line at hannes.wyss@gmail.com and I will try to help you. Don't
265
+ forget to include the offending code-snippet!
266
+
267
+ All compatibility code is deprecated and will be removed in version 1.0.0
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ gem "ruby-ole"
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ group :development do
9
+ gem "bundler"
10
+ gem "jeweler"
11
+ gem "rcov"
12
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,20 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ git (1.2.5)
5
+ jeweler (1.5.2)
6
+ bundler (~> 1.0.0)
7
+ git (>= 1.2.5)
8
+ rake
9
+ rake (0.8.7)
10
+ rcov (0.9.9)
11
+ ruby-ole (1.2.11.1)
12
+
13
+ PLATFORMS
14
+ ruby
15
+
16
+ DEPENDENCIES
17
+ bundler
18
+ jeweler
19
+ rcov
20
+ ruby-ole
data/History.txt ADDED
@@ -0,0 +1,307 @@
1
+ === 0.6.5 / 07.12.2010
2
+
3
+ * 2 Enhancements courtesy to ISS AG.
4
+
5
+ * Outlining (Grouping) of lines and columns is now possible. The outlining
6
+ maximum is 8. This means you can do 8 subgroups in a group.
7
+
8
+ * Hiding and Unhiding of lines and columns is now possible.
9
+
10
+ * Both of above two points is now possible by creating a new Excel File from
11
+ scratch or editing an existing XLS and adding groups or hiding lines to it.
12
+
13
+ === 0.6.4.1 / 2009-09-17
14
+
15
+ * 3 Bugfixes
16
+
17
+ * Fixes the issue reported by Thomas Preymesser and tracked down most of the
18
+ way by Hugh McGowan in
19
+ http://rubyforge.org/tracker/index.php?func=detail&aid=26647&group_id=678&atid=2677
20
+ where reading the value of the first occurrence of a shared formula
21
+ failed.
22
+
23
+ * Fixes the issue reported by Anonymous in
24
+ http://rubyforge.org/tracker/index.php?func=detail&aid=26546&group_id=678&atid=2677
25
+ where InvalidDate was raised for some Dates.
26
+
27
+ * Fixes the issue reported by John Lee in
28
+ http://rubyforge.org/tracker/index.php?func=detail&aid=27110&group_id=678&atid=2677
29
+ which is probably a duplicate of the Bug previously reported by Kadvin XJ in
30
+ http://rubyforge.org/tracker/index.php?func=detail&aid=26182&group_id=678&atid=2677
31
+ where unchanged rows were marked as changed in the Excel-Writer while the
32
+ File was being written, triggering an Error.
33
+
34
+ * 1 minor enhancement
35
+
36
+ * Detect row offsets from Cell data if Row-Ops are missing
37
+ This fixes a bug reported by Alexander Logvinov in
38
+ http://rubyforge.org/tracker/index.php?func=detail&aid=26513&group_id=678&atid=2677
39
+
40
+
41
+ === 0.6.4 / 2009-07-03
42
+
43
+ * 5 Bugfixes
44
+
45
+ * Fixes the issue reported by Harley Mackenzie in
46
+ http://rubyforge.org/tracker/index.php?func=detail&aid=24119&group_id=678&atid=2677
47
+ where in some edge-cases numbers were stored incorrectly
48
+
49
+ * Fixes the issue reported and fixed by someone23 in
50
+ http://rubyforge.org/tracker/index.php?func=detail&aid=25732&group_id=678&atid=2677
51
+ where using Row-updater methods with blocks caused LocalJumpErrors
52
+
53
+ * Fixes the issue reported and fixed by Corey Burrows in
54
+ http://rubyforge.org/tracker/index.php?func=detail&aid=25784&group_id=678&atid=2677
55
+ where "Setting the height of a row, either in Excel directly, or via the
56
+ Spreadsheet::Row#height= method results in a row that Excel displays with
57
+ the maximum row height (409)."
58
+
59
+ * Fixes the issue reported by Don Park in
60
+ http://rubyforge.org/tracker/index.php?func=detail&aid=25968&group_id=678&atid=2677
61
+ where some Workbooks could not be parsed due to the OLE-entry being all
62
+ uppercase
63
+
64
+ * Fixes the issue reported by Iwan Buetti in
65
+ http://rubyforge.org/tracker/index.php?func=detail&aid=24414&group_id=678&atid=2677
66
+ where parsing some Workbooks failed with an Invalid date error.
67
+
68
+
69
+ * 1 major enhancement
70
+
71
+ * Spreadsheet now runs on Ruby 1.9
72
+
73
+ === 0.6.3.1 / 2009-02-13
74
+
75
+ * 3 Bugfixes
76
+
77
+ * Only selects the First Worksheet by default
78
+ This deals with an issue reported by Biörn Andersson in
79
+ http://rubyforge.org/tracker/?func=detail&atid=2677&aid=23736&group_id=678
80
+ where data-edits in OpenOffice were propagated through all selected
81
+ sheets.
82
+
83
+ * Honors Row, Column, Worksheet and Workbook-formats
84
+ and thus fixes a Bug introduced in
85
+ http://scm.ywesee.com/?p=spreadsheet;a=commit;h=52755ad76fdda151564b689107ca2fbb80af3b78
86
+ and reported in
87
+ http://rubyforge.org/tracker/index.php?func=detail&aid=23875&group_id=678&atid=2678
88
+ and by Joachim Schneider in
89
+ http://rubyforge.org/forum/forum.php?thread_id=31056&forum_id=2920
90
+
91
+ * Fixes a bug reported by Alexander Skwar in
92
+ http://rubyforge.org/forum/forum.php?thread_id=31403&forum_id=2920
93
+ where the user-defined formatting of Dates and Times was overwritten with
94
+ a default format, and other issues connected with writing Dates and Times
95
+ into Spreadsheets.
96
+
97
+ * 1 minor enhancements
98
+
99
+ * Spreadsheet shold now be completely warning-free,
100
+ as requested by Eric Peterson in
101
+ http://rubyforge.org/forum/forum.php?thread_id=31346&forum_id=2920
102
+
103
+ === 0.6.3 / 2009-01-14
104
+
105
+ * 1 Bugfix
106
+
107
+ * Fixes the issue reported by Corey Martella in
108
+ http://rubyforge.org/forum/message.php?msg_id=63651
109
+ as well as other issues engendered by the decision to always shorten
110
+ Rows to the last non-nil value.
111
+
112
+ * 2 minor enhancements
113
+
114
+ * Added bin/xlsopcodes, a tool for examining Excel files
115
+
116
+ * Documents created by Spreadsheet can now be Printed in Excel and
117
+ Excel-Viewer.
118
+ This issue was reported by Spencer Turner in
119
+ http://rubyforge.org/tracker/index.php?func=detail&aid=23287&group_id=678&atid=2677
120
+
121
+ === 0.6.2.1 / 2008-12-18
122
+
123
+ * 1 Bugfix
124
+
125
+ * Using Spreadsheet together with 'jcode' could lead to broken Excel-Files
126
+ Thanks to Eugene Mikhailov for tracking this one down in:
127
+ http://rubyforge.org/tracker/index.php?func=detail&aid=23085&group_id=678&atid=2677
128
+
129
+ === 0.6.2 / 2008-12-11
130
+
131
+ * 14 Bugfixes
132
+
133
+ * Fixed a bug where #<boolean>! methods did not trigger a call to
134
+ #row_updated
135
+
136
+ * Corrected the Row-Format in both Reader and Writer (was Biff5 for some
137
+ reason)
138
+
139
+ * Populates Row-instances with @default_format, @height, @outline_level
140
+ and @hidden attributes
141
+
142
+ * Fixed a Bug where Workbooks deriving from a Template-Workbook without
143
+ SST could not be saved
144
+ Reported in
145
+ http://rubyforge.org/tracker/index.php?func=detail&aid=22863&group_id=678&atid=2678
146
+
147
+ * Improved handling of Numeric Values (writes a RK-Entry for a Float
148
+ only if it can be encoded with 4 leading zeroes, and a Number-Entry for an
149
+ Integer only if it cannot be encoded as an RK)
150
+
151
+ * Fixes a bug where changes to a Row were ignored if they were
152
+ outside of an existing Row-Block.
153
+
154
+ * Fixes a bug where MULRK-Entries sometimes only contained a single RK
155
+
156
+ * Fixes a bug where formatting was ignored if it was applied to empty Rows
157
+ Reported by Zomba Lumix in
158
+ http://rubyforge.org/forum/message.php?msg_id=61985
159
+
160
+ * Fixes a bug where modifying a Row in a loaded Workbook could lead to Rows
161
+ with smaller indices being set to nil.
162
+ Reported by Ivan Samsonov in
163
+ http://rubyforge.org/forum/message.php?msg_id=62816
164
+
165
+ * Deals with rounding-problems when calculating Time
166
+ Reported by Bughunter extraordinaire Bjørn Hjelle
167
+
168
+ * Correct splitting of wide characters in SST
169
+ Reported by Michel Ziegler and by Eugene Mikhailov in
170
+ http://rubyforge.org/tracker/index.php?func=detail&aid=23085&group_id=678&atid=2677
171
+
172
+ * Fix an off-by-one error in write_mulrk that caused Excel to complain that
173
+ 'Data may be lost', reported by Emma in
174
+ http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/321979
175
+ and by Chris Lowis in
176
+ http://rubyforge.org/tracker/index.php?func=detail&aid=22892&group_id=678&atid=2677
177
+
178
+
179
+ * Read formats correctly in read_mulrk
180
+ Reported by Ivan Samsonov
181
+ Fixes that part of http://rubyforge.org/forum/message.php?msg_id=62821
182
+ which is a bug. Does nothing for the disappearance of Rich-Text
183
+ formatting, which will not be addressed until 0.7.0
184
+
185
+ * Fixes a (benign?) bug, where adding text to a template-file resulted in
186
+ a duplicate extsst-record.
187
+
188
+ * 2 minor enhancements
189
+
190
+ * Improved recognition of Time-Formats
191
+
192
+ * Improvement to Robustness: allow Spreadsheet::Workbook.new
193
+ Takes care of http://rubyforge.org/forum/message.php?msg_id=62941
194
+ Reported by David Chamberlain
195
+
196
+ === 0.6.1.9 / 2008-11-07
197
+
198
+ * 1 Bugfix
199
+
200
+ * Fixes a precision-issue in Excel::Row#datetime: Excel records Time-Values
201
+ with more significant bits (but not necessarily more precise) than
202
+ DateTime can handle.
203
+ (Thanks to Bjørn Hjelle for the Bugreport)
204
+
205
+ * 1 minor enhancement
206
+
207
+ * Added support for appending Worksheets to a Workbook
208
+ (Thanks to Mohammed Rabbani for the report)
209
+
210
+ === 0.6.1.8 / 2008-10-31
211
+
212
+ * 1 Bugfix
213
+
214
+ * Fixes a bug where out-of-sequence reading of multiple Worksheets could
215
+ lead to data from the wrong Sheet being returned.
216
+ (Thanks to Bugreporter extraordinaire Bjørn Hjelle)
217
+
218
+ === 0.6.1.7 / 2008-10-30
219
+
220
+ * 1 Bugfix
221
+
222
+ * Fixes a bug where all Formulas were ignored.
223
+ (Thanks to Bjørn Hjelle for the report)
224
+
225
+ * 1 minor enhancement
226
+
227
+ * Allow the substitution of an IO object with a StringIO.
228
+ (Thanks to luxor for the report)
229
+
230
+ === 0.6.1.6 / 2008-10-28
231
+
232
+ * 2 Bugfixes
233
+
234
+ * Fixed encoding and decoding of BigNums, negative and other large Numbers
235
+ http://rubyforge.org/tracker/index.php?func=detail&aid=22581&group_id=678&atid=2677
236
+ * Fix a bug where modifications to default columns weren't stored
237
+ http://rubyforge.org/forum/message.php?msg_id=61567
238
+
239
+ * 1 minor enhancement
240
+
241
+ * Row#enriched_data won't return a Bogus-Date if the data isn't a Numeric
242
+ value
243
+ (Thanks to Bjørn Hjelle for the report)
244
+
245
+ === 0.6.1.5 / 2008-10-24
246
+
247
+ * 2 Bugfixes
248
+
249
+ * Removed obsolete code which triggered Iconv::InvalidEncoding
250
+ on Systems with non-gnu Iconv:
251
+ http://rubyforge.org/tracker/index.php?func=detail&aid=22541&group_id=678&atid=2677
252
+ * Handle empty Worksheets
253
+ (Thanks to Charles Lowe for the Patches)
254
+
255
+ === 0.6.1.4 / 2008-10-23
256
+
257
+ * 1 Bugfix
258
+
259
+ * Biff8#wide now works properly even if $KCODE=='UTF-8'
260
+ (Thanks to Bjørn Hjelle for the Bugreport)
261
+
262
+ * 1 minor enhancement
263
+
264
+ * Read/Write functionality for Links (only URLs can be written as of now)
265
+
266
+ === 0.6.1.3 / 2008-10-21
267
+
268
+ * 2 Bugfixes
269
+
270
+ * Renamed UTF8 to UTF-8 to support freebsd
271
+ (Thanks to Jacob Atzen for the Patch)
272
+ * Fixes a Bug where only the first Rowblock was read correctly if there were
273
+ no DBCELL records terminating the Rowblocks.
274
+ (Thanks to Bjørn Hjelle for the Bugreport)
275
+
276
+ === 0.6.1.2 / 2008-10-20
277
+
278
+ * 2 Bugfixes
279
+
280
+ * Corrected the Font-Encoding values in Excel::Internals
281
+ (Thanks to Bjørn Hjelle for the Bugreport)
282
+ * Spreadsheet now skips Richtext-Formatting runs and Asian Phonetic
283
+ Settings when reading the SST, fixing a problem where the presence of
284
+ Richtext could lead to an incomplete SST.
285
+
286
+ === 0.6.1.1 / 2008-10-20
287
+
288
+ * 1 Bugfix
289
+
290
+ * Corrected the Manifest - included column.rb
291
+
292
+ === 0.6.1 / 2008-10-17
293
+
294
+ * 3 minor enhancements
295
+
296
+ * Adds Column formatting and Worksheet#format_column
297
+ * Reads and writes correct Fonts (Font-indices > 3 appear to be 1-based)
298
+ * Reads xf data
299
+
300
+ === 0.6.0 / 2008-10-13
301
+
302
+ * 1 major enhancement
303
+
304
+ * Initial upload of the shiny new Spreadsheet Gem after three weeks of
305
+ grueling labor in the dark binary mines of Little-Endian Biff and long
306
+ hours spent polishing the surfaces of documentation.
307
+