ruby-spreadsheet 0.6.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/GUIDE.txt +267 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +20 -0
- data/History.txt +307 -0
- data/LICENSE.txt +619 -0
- data/README.txt +91 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/bin/xlsopcodes +18 -0
- data/lib/parseexcel.rb +27 -0
- data/lib/parseexcel/parseexcel.rb +75 -0
- data/lib/parseexcel/parser.rb +11 -0
- data/lib/spreadsheet.rb +79 -0
- data/lib/spreadsheet/column.rb +71 -0
- data/lib/spreadsheet/compatibility.rb +23 -0
- data/lib/spreadsheet/datatypes.rb +110 -0
- data/lib/spreadsheet/encodings.rb +46 -0
- data/lib/spreadsheet/excel.rb +88 -0
- data/lib/spreadsheet/excel/error.rb +26 -0
- data/lib/spreadsheet/excel/internals.rb +386 -0
- data/lib/spreadsheet/excel/internals/biff5.rb +17 -0
- data/lib/spreadsheet/excel/internals/biff8.rb +19 -0
- data/lib/spreadsheet/excel/offset.rb +41 -0
- data/lib/spreadsheet/excel/reader.rb +1173 -0
- data/lib/spreadsheet/excel/reader/biff5.rb +22 -0
- data/lib/spreadsheet/excel/reader/biff8.rb +193 -0
- data/lib/spreadsheet/excel/row.rb +92 -0
- data/lib/spreadsheet/excel/sst_entry.rb +46 -0
- data/lib/spreadsheet/excel/workbook.rb +80 -0
- data/lib/spreadsheet/excel/worksheet.rb +100 -0
- data/lib/spreadsheet/excel/writer.rb +1 -0
- data/lib/spreadsheet/excel/writer/biff8.rb +75 -0
- data/lib/spreadsheet/excel/writer/format.rb +253 -0
- data/lib/spreadsheet/excel/writer/workbook.rb +652 -0
- data/lib/spreadsheet/excel/writer/worksheet.rb +948 -0
- data/lib/spreadsheet/font.rb +92 -0
- data/lib/spreadsheet/format.rb +177 -0
- data/lib/spreadsheet/formula.rb +9 -0
- data/lib/spreadsheet/helpers.rb +11 -0
- data/lib/spreadsheet/link.rb +43 -0
- data/lib/spreadsheet/row.rb +132 -0
- data/lib/spreadsheet/workbook.rb +120 -0
- data/lib/spreadsheet/worksheet.rb +279 -0
- data/lib/spreadsheet/writer.rb +30 -0
- data/ruby-spreadsheet.gemspec +126 -0
- data/test/data/test_changes.xls +0 -0
- data/test/data/test_copy.xls +0 -0
- data/test/data/test_datetime.xls +0 -0
- data/test/data/test_empty.xls +0 -0
- data/test/data/test_formula.xls +0 -0
- data/test/data/test_missing_row.xls +0 -0
- data/test/data/test_version_excel5.xls +0 -0
- data/test/data/test_version_excel95.xls +0 -0
- data/test/data/test_version_excel97.xls +0 -0
- data/test/excel/row.rb +35 -0
- data/test/excel/writer/worksheet.rb +23 -0
- data/test/font.rb +163 -0
- data/test/integration.rb +1281 -0
- data/test/row.rb +33 -0
- data/test/suite.rb +14 -0
- data/test/workbook.rb +21 -0
- data/test/worksheet.rb +80 -0
- metadata +203 -0
data/.document
ADDED
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
|
+
|