ruby-spreadsheet 0.6.5

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 (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
+