This is a library for writing to ODF output with Ruby. It currently only supports creating spreadsheets (ODS) and text documents (ODT). Slide shows (ODP) may be added some time in the future.
This is NOT an ODF reading library.
You should be able to install the latest stable version by saying something like
sudo gem install rodf
rODF works pretty much like Builder, but with ODF-aware constructs. Try this:
require 'odf/spreadsheet' ODF::Spreadsheet.file("my-spreadsheet.ods") do table 'My first table from Ruby' do row {cell 'Hello, rODF world!' } end end
Some basic formatting is also possible:
require 'odf/spreadsheet' ODF::Spreadsheet.file("my-spreadsheet.ods") do style 'red-cell', :family => :cell do property :text, 'font-weight' => 'bold', 'color' => '#ff0000' end table 'Red text table' do row {cell 'Red', :style => 'red-cell' } end end
Some basic conditional formatting is also possible:
require 'odf/spreadsheet' ODF::Spreadsheet.file("my-spreadsheet.ods") do office_style 'red-cell', :family => :cell do property :text, 'font-weight' => 'bold', 'color' => '#ff0000' end office_style 'green-cell', :family => :cell do property :text, 'font-weight' => 'bold', 'color' => '#00ff00' end # conditional formating must be defined as style and the value of # apply-style-name must be an office_style style 'cond1', :family => :cell do property :conditional, 'condition' => 'cell-content()<0', 'apply-style-name' => 'red-cell' property :conditional, 'condition' => 'cell-content()>0', 'apply-style-name' => 'green-cell' end table 'Red text table' do row {cell 'Red force', :style => 'red-cell' } row {cell '-4', :type => :float, :style => 'cond1' } row {cell '0', :type => :float, :style => 'cond1' } row {cell '5', :type => :float, :style => 'cond1' } end end
The declarative style shown above is just syntatic sugar. A more procedural style can also be used. Like so:
require 'odf/spreadsheet' ss = ODF::Spreadsheet.new t = ss.table 'My first table from Ruby' r = t.row c = r.cell 'Hello, rODF world!' ss.write_to 'my-spreadsheet.ods'
Both styles can be mixed and matched at will:
require 'odf/spreadsheet' ss = ODF::Spreadsheet.new ss.table 'My first table from Ruby' do row { cell 'Hello, rODF world!' } end ss.write_to 'my-spreadsheet.ods'