The Ruby Spreadsheet

December 16, 2008

Why are we using GPLv3 as the basic Licence for the Ruby Spreadsheet?

Filed under: Licence — Tags: , , — zdavatz @ 1:37 pm

This post comes on the back of where Larry Kluger is asking why we would use a licence like GPLv3 for the Ruby Spreadsheet. There are a few points noteworthy about this argument:

1. For a new project it does make sense to start with a GPLv3 Licence. Even Linus Torvalds would consider doing that. Spreadsheet is a totally new project started from 0.

2. Projects like or the Kernel are both HUGE projects in comparison to Spreadsheet. They come with thousands and millions of strings attached. These projects where started decades ago and at that time different licenses applied. They grew with the license that was doing it for them at the time they started.

3. In the 21st century Tivo, DRM and Patents play a much bigger role then they did in the 20th century.

4. GPLv3 is not perfect but it does make sense for a fresh project.

5. The author matters. Cut the developer some slack and give some code back to the community. If you do not want to do so, then just pay a small fee when somebody else does the coding for you.


December 12, 2008

14 Bug Fixes to Ruby Spreadsheet

Filed under: Release — Tags: — zdavatz @ 7:20 am

* 14 Bugfixes;a=blame;f=History.txt;hb=6ba3b8c5c3d13f0b84df74cca616777e26ecd37e

* Fixed a bug where #<boolean>! methods did not trigger a call to #row_updated
* Corrected the Row-Format in both Reader and Writer (was Biff5 for some reason)
* Populates Row-instances with @default_format, @height, @outline_level and @hidden attributes
* Fixed a Bug where Workbooks deriving from a Template-Workbook without SST could not be saved Reported in
* Improved handling of Numeric Values (writes a RK-Entry for a Float only if it can be encoded with 4 leading zeroes, and a Number-Entry for an Integer only if it cannot be encoded as an RK)
* Fixes a bug where changes to a Row were ignored if they were outside of an existing Row-Block.
* Fixes a bug where MULRK-Entries sometimes only contained a single RK
* Fixes a bug where formatting was ignored if it was applied to empty Rows Reported by Zomba Lumix in
* Fixes a bug where modifying a Row in a loaded Workbook could lead to Rows with smaller indices being set to nil. Reported by Ivan Samsonov in
* Deals with rounding-problems when calculating Time Reported by Bughunter extraordinaire Bjørn Hjelle
* Correct splitting of wide characters in SST, Reported by Michel Ziegler and by Eugene Mikhailov in
* Fix an off-by-one error in write_mulrk that caused Excel to complain that ‘Data may be lost’, reported by Emma in and by Chris Lowis in
* Read formats correctly in read_mulrk, Reported by Ivan Samsonov, Fixes that part of which is a bug. Does nothing for the disappearance of Rich-Text, formatting, which will not be addressed until 0.7.0
* Fixes a (benign?) bug, where adding text to a template-file resulted in a duplicate extsst-record.
* 2 minor enhancements
* Improved recognition of Time-Formats
* Improvement to Robustness: allow, Takes care of, Reported by David Chamberlain

December 11, 2008

Ruby Spreadsheet Licence for companies that do not want to use GPLv3

Filed under: Licence — Tags: , — zdavatz @ 8:14 am

Ruby Spreadsheet Licence Version 0.11

1. The purpose of this license is to allow the usage of the Ruby Spreadsheet Library by ywesee GmbH up to Version 1.0. The current version is All versions of the Software can be found at;a=summary

2. The reason for this licence is that does not want to use Spreadsheet under GPLv3.

3. is allowed to use above software on two servers. is allowed to use the above software within their software for their purpose according to their User-Story. According to Name Surname the User-Story is “It would form part of an ‘export these records to …’ feature on our website and as such it would sit alongside export options to PDF, CSV, HTML etc.  So it would be part of a service.”

4. is allowed to use Spreadsheet as noted under point three.

5. Except otherwise stated in this contract, is not allowed to resell, reuse or give away any version of above code under any other licence then the GPLv3.

6. will pay a onetime fee of EUR X for the usage of Spreadsheet up to Version 1.0. The fee is due once this contract has been agreed upon by both parties. The invoice will be sent to via Email.

7. ywesee GmbH will work towards fixing any bug submitted via Issues that are estimated to require more than 2 workdays to correct may be subject to a fee, which will be negotiated prior to the work.

8. The court of jurisdiction is Zürich, Switzerland.

Please note:  If a bug occurs in Version 0.9999 to Version 1.0 and you or anybody else reports that bug, then we will fix it not matter what. If a bug occurs in Version 1.01 to Version 1.02 then of course we will have to renegotiate the terms of our contract and the price for Version 1.0 up to Version 2.0.

We will not “create” a bug in Version pre 1.0 and then ask for money for Version 1.0. Version 1.0 will include many bug and Feature improvements a long way from the current version (if you look at the current Version History you can see our track Record and we will not do a realese for “money makeing reasons”).  So to cover our work we need to cover our expenses.

To see the Ruby Spreadsheet Track History, please see:

To see the Ruby Spreadsheet RoadMap, please see:

December 10, 2008

The Ruby Spreadsheet

Filed under: Ruby, Spreadsheet — Tags: , , — zdavatz @ 4:15 pm;a=summary

The Spreadsheet Library is designed to read and write Spreadsheet
Documents. As of version 0.6.0, only Microsoft Excel compatible
spreadsheets are supported. Spreadsheet is a combination/complete
rewrite of the Spreadsheet::Excel Library by Daniel J. Berger and the
ParseExcel Library by Hannes Wyss. Spreadsheet can read, write and
modify Spreadsheet Documents.


### 0.6.0 / 2008-10-13
Initial upload of the shiny new Spreadsheet Gem after three weeks of
grueling labor in the dark binary mines of Little-Endian Biff and long
hours spent polishing the surfaces of documentation:

* Significantly improved memory-efficiency when reading large Excel Files
* Limited Spreadsheet modification support
* Improved handling of String Encodings
* Runs on top of the ruby-ole Library


0.7.0: Improved Format support/Styles
0.7.1: Document Modification: Formats/Styles
0.8.0: Formula Support
0.8.1: Document Modification: Formulas
0.9.0: Write-Support: BIFF5
1.0.0: Ruby 1.9 Support;
Remove backward compatibility code

Backward Compatibility:

Spreadsheet is designed to be a drop-in replacement for both
ParseExcel and Spreadsheet::Excel. It provides a number of
require-paths for backward compatibility with its predecessors. If you
have been working with ParseExcel, you have probably used one or more
of the following:

require ‘parseexcel’
require ‘parseexcel/parseexcel’
require ‘parseexcel/parser’

Either of the above will define the ParseExcel.parse method as a
facade to Additionally, this will alter Spreadsheets
behavior to define the ParseExcel::Worksheet::Cell class and fill each
parsed Row with instances thereof, which in turn provide ParseExcel’s
Cell#to_s(encoding) and Cell#date methods.
You will have to manually uninstall the parseexcel library.

If you are upgrading from Spreadsheet::Excel, you were probably using
Workbook#add_worksheet and Worksheet#write, write_row or write_column.
Use the following to load the code which provides them:

require ‘spreadsheet/excel’

Again, you will have to manually uninstall the spreadsheet-excel library.

If you perform fancy formatting, you may run into trouble as the
Format implementation has changed considerably. If that is the case,
please drop me a line at and I will try to help
you. Don’t forget to include the offending code-snippet!

Blog at