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