ttb-spreadsheet 0.6.5.8

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/GUIDE.txt +267 -0
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +18 -0
  4. data/History.txt +365 -0
  5. data/LICENSE.txt +619 -0
  6. data/Manifest.txt +62 -0
  7. data/README.txt +107 -0
  8. data/Rakefile +0 -0
  9. data/bin/xlsopcodes +18 -0
  10. data/lib/parseexcel.rb +27 -0
  11. data/lib/parseexcel/parseexcel.rb +75 -0
  12. data/lib/parseexcel/parser.rb +11 -0
  13. data/lib/spreadsheet.rb +79 -0
  14. data/lib/spreadsheet/column.rb +71 -0
  15. data/lib/spreadsheet/compatibility.rb +23 -0
  16. data/lib/spreadsheet/datatypes.rb +106 -0
  17. data/lib/spreadsheet/encodings.rb +57 -0
  18. data/lib/spreadsheet/excel.rb +88 -0
  19. data/lib/spreadsheet/excel/error.rb +26 -0
  20. data/lib/spreadsheet/excel/internals.rb +365 -0
  21. data/lib/spreadsheet/excel/internals/biff5.rb +17 -0
  22. data/lib/spreadsheet/excel/internals/biff8.rb +19 -0
  23. data/lib/spreadsheet/excel/offset.rb +41 -0
  24. data/lib/spreadsheet/excel/reader.rb +1173 -0
  25. data/lib/spreadsheet/excel/reader/biff5.rb +22 -0
  26. data/lib/spreadsheet/excel/reader/biff8.rb +199 -0
  27. data/lib/spreadsheet/excel/row.rb +92 -0
  28. data/lib/spreadsheet/excel/sst_entry.rb +46 -0
  29. data/lib/spreadsheet/excel/workbook.rb +80 -0
  30. data/lib/spreadsheet/excel/worksheet.rb +100 -0
  31. data/lib/spreadsheet/excel/writer.rb +1 -0
  32. data/lib/spreadsheet/excel/writer/biff8.rb +75 -0
  33. data/lib/spreadsheet/excel/writer/format.rb +253 -0
  34. data/lib/spreadsheet/excel/writer/workbook.rb +690 -0
  35. data/lib/spreadsheet/excel/writer/worksheet.rb +891 -0
  36. data/lib/spreadsheet/font.rb +92 -0
  37. data/lib/spreadsheet/format.rb +177 -0
  38. data/lib/spreadsheet/formula.rb +9 -0
  39. data/lib/spreadsheet/helpers.rb +11 -0
  40. data/lib/spreadsheet/link.rb +43 -0
  41. data/lib/spreadsheet/row.rb +132 -0
  42. data/lib/spreadsheet/workbook.rb +126 -0
  43. data/lib/spreadsheet/worksheet.rb +287 -0
  44. data/lib/spreadsheet/writer.rb +30 -0
  45. data/spreadsheet.gemspec +20 -0
  46. data/test/data/test_changes.xls +0 -0
  47. data/test/data/test_copy.xls +0 -0
  48. data/test/data/test_datetime.xls +0 -0
  49. data/test/data/test_empty.xls +0 -0
  50. data/test/data/test_formula.xls +0 -0
  51. data/test/data/test_long_sst_record.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/workbook.rb +23 -0
  58. data/test/excel/writer/worksheet.rb +24 -0
  59. data/test/font.rb +163 -0
  60. data/test/integration.rb +1311 -0
  61. data/test/row.rb +33 -0
  62. data/test/suite.rb +17 -0
  63. data/test/workbook.rb +29 -0
  64. data/test/worksheet.rb +80 -0
  65. metadata +151 -0
@@ -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,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,18 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ttb-spreadsheet (0.6.5.8)
5
+ ruby-ole
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ rake (0.8.7)
11
+ ruby-ole (1.2.11.2)
12
+
13
+ PLATFORMS
14
+ ruby
15
+
16
+ DEPENDENCIES
17
+ rake (~> 0.8.7)
18
+ ttb-spreadsheet!
@@ -0,0 +1,365 @@
1
+ === 0.6.5.9 / 7.9.2011
2
+
3
+ * Fixed a frozen string bug thanks to dblock (Daniel Doubrovkine),
4
+ * dblock@dblock.org
5
+
6
+ * https://github.com/dblock/spreadsheet/commit/164dcfbb24097728f1a7453702c270107e725b7c
7
+
8
+ === 0.6.5.8 / 30.8.2011
9
+
10
+ * This patch is about adding a sheet_count method to workbook so that it returns
11
+ * the total no of worksheets for easy access. Please check. By
12
+ * tamizhgeek@gmail.com
13
+
14
+ * https://gist.github.com/1180625
15
+
16
+ === 0.6.5.7 / 20.7.2011
17
+
18
+ * Fixed the bug introduced by Roel van der Hoorn and updated the test cases.
19
+
20
+ * https://github.com/vanderhoorn/spreadsheet/commit/c79ab14dcf40dee1d6d5ad2b174f3fe31414ca28
21
+
22
+ === 0.6.5.6 / 20.7.2011
23
+
24
+ * Added a fix from Roel van der Hoorn to sanitize_worksheets if 'sheets' is empty.
25
+
26
+ * https://github.com/vanderhoorn/spreadsheet/commit/c109f2ac5486f9a38a6d93267daf560ab4b9473e
27
+
28
+ === 0.6.5.5 / 24.6.2011
29
+
30
+ * updated the color code for orange to 0x0034 => :orange, thanks to the hint of Jonty
31
+
32
+ * https://gist.github.com/1044700
33
+
34
+ === 0.6.5.4 / 18.4.2011
35
+
36
+ * Updated worksheet.rb according to the Patch of Björn Andersson.
37
+
38
+ * https://gist.github.com/925007#file_test.patch
39
+ * http://url.ba/09p9
40
+
41
+ === 0.6.5.3 / 23.3.2011
42
+
43
+ * Updated Txt lib/spreadsheet/excel/writer/biff8.rb with a Patch from Alexandre Bini
44
+
45
+ * See this for full detail: http://url.ba/6r1z
46
+
47
+ === 0.6.5.2 / 14.2.2011
48
+
49
+ * Updated test/integration.rb to work with Ruby ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
50
+
51
+ * Thanks for the hint tomiacannondale@gmail.com
52
+
53
+ === 0.6.5.1 / 17.1.2011
54
+
55
+ * One enhancement thanks to Qiong Peng, Moo Yu, and Thierry Thelliez
56
+
57
+ * http://dev.ywesee.com/wiki.php/Gem/Spreadsheet
58
+
59
+ === 0.6.5 / 07.12.2010
60
+
61
+ * 2 Enhancements courtesy to ISS AG.
62
+
63
+ * Outlining (Grouping) of lines and columns is now possible. The outlining
64
+ maximum is 8. This means you can do 8 subgroups in a group.
65
+
66
+ * Hiding and Unhiding of lines and columns is now possible.
67
+
68
+ * Both of above two points is now possible by creating a new Excel File from
69
+ scratch or editing an existing XLS and adding groups or hiding lines to it.
70
+
71
+ === 0.6.4.1 / 2009-09-17
72
+
73
+ * 3 Bugfixes
74
+
75
+ * Fixes the issue reported by Thomas Preymesser and tracked down most of the
76
+ way by Hugh McGowan in
77
+ http://rubyforge.org/tracker/index.php?func=detail&aid=26647&group_id=678&atid=2677
78
+ where reading the value of the first occurrence of a shared formula
79
+ failed.
80
+
81
+ * Fixes the issue reported by Anonymous in
82
+ http://rubyforge.org/tracker/index.php?func=detail&aid=26546&group_id=678&atid=2677
83
+ where InvalidDate was raised for some Dates.
84
+
85
+ * Fixes the issue reported by John Lee in
86
+ http://rubyforge.org/tracker/index.php?func=detail&aid=27110&group_id=678&atid=2677
87
+ which is probably a duplicate of the Bug previously reported by Kadvin XJ in
88
+ http://rubyforge.org/tracker/index.php?func=detail&aid=26182&group_id=678&atid=2677
89
+ where unchanged rows were marked as changed in the Excel-Writer while the
90
+ File was being written, triggering an Error.
91
+
92
+ * 1 minor enhancement
93
+
94
+ * Detect row offsets from Cell data if Row-Ops are missing
95
+ This fixes a bug reported by Alexander Logvinov in
96
+ http://rubyforge.org/tracker/index.php?func=detail&aid=26513&group_id=678&atid=2677
97
+
98
+
99
+ === 0.6.4 / 2009-07-03
100
+
101
+ * 5 Bugfixes
102
+
103
+ * Fixes the issue reported by Harley Mackenzie in
104
+ http://rubyforge.org/tracker/index.php?func=detail&aid=24119&group_id=678&atid=2677
105
+ where in some edge-cases numbers were stored incorrectly
106
+
107
+ * Fixes the issue reported and fixed by someone23 in
108
+ http://rubyforge.org/tracker/index.php?func=detail&aid=25732&group_id=678&atid=2677
109
+ where using Row-updater methods with blocks caused LocalJumpErrors
110
+
111
+ * Fixes the issue reported and fixed by Corey Burrows in
112
+ http://rubyforge.org/tracker/index.php?func=detail&aid=25784&group_id=678&atid=2677
113
+ where "Setting the height of a row, either in Excel directly, or via the
114
+ Spreadsheet::Row#height= method results in a row that Excel displays with
115
+ the maximum row height (409)."
116
+
117
+ * Fixes the issue reported by Don Park in
118
+ http://rubyforge.org/tracker/index.php?func=detail&aid=25968&group_id=678&atid=2677
119
+ where some Workbooks could not be parsed due to the OLE-entry being all
120
+ uppercase
121
+
122
+ * Fixes the issue reported by Iwan Buetti in
123
+ http://rubyforge.org/tracker/index.php?func=detail&aid=24414&group_id=678&atid=2677
124
+ where parsing some Workbooks failed with an Invalid date error.
125
+
126
+
127
+ * 1 major enhancement
128
+
129
+ * Spreadsheet now runs on Ruby 1.9
130
+
131
+ === 0.6.3.1 / 2009-02-13
132
+
133
+ * 3 Bugfixes
134
+
135
+ * Only selects the First Worksheet by default
136
+ This deals with an issue reported by Biörn Andersson in
137
+ http://rubyforge.org/tracker/?func=detail&atid=2677&aid=23736&group_id=678
138
+ where data-edits in OpenOffice were propagated through all selected
139
+ sheets.
140
+
141
+ * Honors Row, Column, Worksheet and Workbook-formats
142
+ and thus fixes a Bug introduced in
143
+ http://scm.ywesee.com/?p=spreadsheet;a=commit;h=52755ad76fdda151564b689107ca2fbb80af3b78
144
+ and reported in
145
+ http://rubyforge.org/tracker/index.php?func=detail&aid=23875&group_id=678&atid=2678
146
+ and by Joachim Schneider in
147
+ http://rubyforge.org/forum/forum.php?thread_id=31056&forum_id=2920
148
+
149
+ * Fixes a bug reported by Alexander Skwar in
150
+ http://rubyforge.org/forum/forum.php?thread_id=31403&forum_id=2920
151
+ where the user-defined formatting of Dates and Times was overwritten with
152
+ a default format, and other issues connected with writing Dates and Times
153
+ into Spreadsheets.
154
+
155
+ * 1 minor enhancements
156
+
157
+ * Spreadsheet shold now be completely warning-free,
158
+ as requested by Eric Peterson in
159
+ http://rubyforge.org/forum/forum.php?thread_id=31346&forum_id=2920
160
+
161
+ === 0.6.3 / 2009-01-14
162
+
163
+ * 1 Bugfix
164
+
165
+ * Fixes the issue reported by Corey Martella in
166
+ http://rubyforge.org/forum/message.php?msg_id=63651
167
+ as well as other issues engendered by the decision to always shorten
168
+ Rows to the last non-nil value.
169
+
170
+ * 2 minor enhancements
171
+
172
+ * Added bin/xlsopcodes, a tool for examining Excel files
173
+
174
+ * Documents created by Spreadsheet can now be Printed in Excel and
175
+ Excel-Viewer.
176
+ This issue was reported by Spencer Turner in
177
+ http://rubyforge.org/tracker/index.php?func=detail&aid=23287&group_id=678&atid=2677
178
+
179
+ === 0.6.2.1 / 2008-12-18
180
+
181
+ * 1 Bugfix
182
+
183
+ * Using Spreadsheet together with 'jcode' could lead to broken Excel-Files
184
+ Thanks to Eugene Mikhailov for tracking this one down in:
185
+ http://rubyforge.org/tracker/index.php?func=detail&aid=23085&group_id=678&atid=2677
186
+
187
+ === 0.6.2 / 2008-12-11
188
+
189
+ * 14 Bugfixes
190
+
191
+ * Fixed a bug where #<boolean>! methods did not trigger a call to
192
+ #row_updated
193
+
194
+ * Corrected the Row-Format in both Reader and Writer (was Biff5 for some
195
+ reason)
196
+
197
+ * Populates Row-instances with @default_format, @height, @outline_level
198
+ and @hidden attributes
199
+
200
+ * Fixed a Bug where Workbooks deriving from a Template-Workbook without
201
+ SST could not be saved
202
+ Reported in
203
+ http://rubyforge.org/tracker/index.php?func=detail&aid=22863&group_id=678&atid=2678
204
+
205
+ * Improved handling of Numeric Values (writes a RK-Entry for a Float
206
+ only if it can be encoded with 4 leading zeroes, and a Number-Entry for an
207
+ Integer only if it cannot be encoded as an RK)
208
+
209
+ * Fixes a bug where changes to a Row were ignored if they were
210
+ outside of an existing Row-Block.
211
+
212
+ * Fixes a bug where MULRK-Entries sometimes only contained a single RK
213
+
214
+ * Fixes a bug where formatting was ignored if it was applied to empty Rows
215
+ Reported by Zomba Lumix in
216
+ http://rubyforge.org/forum/message.php?msg_id=61985
217
+
218
+ * Fixes a bug where modifying a Row in a loaded Workbook could lead to Rows
219
+ with smaller indices being set to nil.
220
+ Reported by Ivan Samsonov in
221
+ http://rubyforge.org/forum/message.php?msg_id=62816
222
+
223
+ * Deals with rounding-problems when calculating Time
224
+ Reported by Bughunter extraordinaire Bjørn Hjelle
225
+
226
+ * Correct splitting of wide characters in SST
227
+ Reported by Michel Ziegler and by Eugene Mikhailov in
228
+ http://rubyforge.org/tracker/index.php?func=detail&aid=23085&group_id=678&atid=2677
229
+
230
+ * Fix an off-by-one error in write_mulrk that caused Excel to complain that
231
+ 'Data may be lost', reported by Emma in
232
+ http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/321979
233
+ and by Chris Lowis in
234
+ http://rubyforge.org/tracker/index.php?func=detail&aid=22892&group_id=678&atid=2677
235
+
236
+
237
+ * Read formats correctly in read_mulrk
238
+ Reported by Ivan Samsonov
239
+ Fixes that part of http://rubyforge.org/forum/message.php?msg_id=62821
240
+ which is a bug. Does nothing for the disappearance of Rich-Text
241
+ formatting, which will not be addressed until 0.7.0
242
+
243
+ * Fixes a (benign?) bug, where adding text to a template-file resulted in
244
+ a duplicate extsst-record.
245
+
246
+ * 2 minor enhancements
247
+
248
+ * Improved recognition of Time-Formats
249
+
250
+ * Improvement to Robustness: allow Spreadsheet::Workbook.new
251
+ Takes care of http://rubyforge.org/forum/message.php?msg_id=62941
252
+ Reported by David Chamberlain
253
+
254
+ === 0.6.1.9 / 2008-11-07
255
+
256
+ * 1 Bugfix
257
+
258
+ * Fixes a precision-issue in Excel::Row#datetime: Excel records Time-Values
259
+ with more significant bits (but not necessarily more precise) than
260
+ DateTime can handle.
261
+ (Thanks to Bjørn Hjelle for the Bugreport)
262
+
263
+ * 1 minor enhancement
264
+
265
+ * Added support for appending Worksheets to a Workbook
266
+ (Thanks to Mohammed Rabbani for the report)
267
+
268
+ === 0.6.1.8 / 2008-10-31
269
+
270
+ * 1 Bugfix
271
+
272
+ * Fixes a bug where out-of-sequence reading of multiple Worksheets could
273
+ lead to data from the wrong Sheet being returned.
274
+ (Thanks to Bugreporter extraordinaire Bjørn Hjelle)
275
+
276
+ === 0.6.1.7 / 2008-10-30
277
+
278
+ * 1 Bugfix
279
+
280
+ * Fixes a bug where all Formulas were ignored.
281
+ (Thanks to Bjørn Hjelle for the report)
282
+
283
+ * 1 minor enhancement
284
+
285
+ * Allow the substitution of an IO object with a StringIO.
286
+ (Thanks to luxor for the report)
287
+
288
+ === 0.6.1.6 / 2008-10-28
289
+
290
+ * 2 Bugfixes
291
+
292
+ * Fixed encoding and decoding of BigNums, negative and other large Numbers
293
+ http://rubyforge.org/tracker/index.php?func=detail&aid=22581&group_id=678&atid=2677
294
+ * Fix a bug where modifications to default columns weren't stored
295
+ http://rubyforge.org/forum/message.php?msg_id=61567
296
+
297
+ * 1 minor enhancement
298
+
299
+ * Row#enriched_data won't return a Bogus-Date if the data isn't a Numeric
300
+ value
301
+ (Thanks to Bjørn Hjelle for the report)
302
+
303
+ === 0.6.1.5 / 2008-10-24
304
+
305
+ * 2 Bugfixes
306
+
307
+ * Removed obsolete code which triggered Iconv::InvalidEncoding
308
+ on Systems with non-gnu Iconv:
309
+ http://rubyforge.org/tracker/index.php?func=detail&aid=22541&group_id=678&atid=2677
310
+ * Handle empty Worksheets
311
+ (Thanks to Charles Lowe for the Patches)
312
+
313
+ === 0.6.1.4 / 2008-10-23
314
+
315
+ * 1 Bugfix
316
+
317
+ * Biff8#wide now works properly even if $KCODE=='UTF-8'
318
+ (Thanks to Bjørn Hjelle for the Bugreport)
319
+
320
+ * 1 minor enhancement
321
+
322
+ * Read/Write functionality for Links (only URLs can be written as of now)
323
+
324
+ === 0.6.1.3 / 2008-10-21
325
+
326
+ * 2 Bugfixes
327
+
328
+ * Renamed UTF8 to UTF-8 to support freebsd
329
+ (Thanks to Jacob Atzen for the Patch)
330
+ * Fixes a Bug where only the first Rowblock was read correctly if there were
331
+ no DBCELL records terminating the Rowblocks.
332
+ (Thanks to Bjørn Hjelle for the Bugreport)
333
+
334
+ === 0.6.1.2 / 2008-10-20
335
+
336
+ * 2 Bugfixes
337
+
338
+ * Corrected the Font-Encoding values in Excel::Internals
339
+ (Thanks to Bjørn Hjelle for the Bugreport)
340
+ * Spreadsheet now skips Richtext-Formatting runs and Asian Phonetic
341
+ Settings when reading the SST, fixing a problem where the presence of
342
+ Richtext could lead to an incomplete SST.
343
+
344
+ === 0.6.1.1 / 2008-10-20
345
+
346
+ * 1 Bugfix
347
+
348
+ * Corrected the Manifest - included column.rb
349
+
350
+ === 0.6.1 / 2008-10-17
351
+
352
+ * 3 minor enhancements
353
+
354
+ * Adds Column formatting and Worksheet#format_column
355
+ * Reads and writes correct Fonts (Font-indices > 3 appear to be 1-based)
356
+ * Reads xf data
357
+
358
+ === 0.6.0 / 2008-10-13
359
+
360
+ * 1 major enhancement
361
+
362
+ * Initial upload of the shiny new Spreadsheet Gem after three weeks of
363
+ grueling labor in the dark binary mines of Little-Endian Biff and long
364
+ hours spent polishing the surfaces of documentation.
365
+