The rubiod
gem is intended to provide cute ruby-style interface to work with OASIS Open Document Format files. For now it supports some functionality to read/modify OD spreadsheets (.ods).
based on netoctone -> github.com/netoctone/rubiod.git
Changes:
-
including unit-tests
-
file can be build in-memory (see ‘Rails example’)
-
improved handling:
-
new row/cell managment allows to read/write any cell
-
hide/show rows
-
-
named cells
rubiod
works with ruby 1.8.7 or higher. It is dependent on libxml-ruby
and rubyzip
gems
At least two ways available:
-
Build gem from source:
git clone https://github.com/McBen/rubiod.git cd rubiod gem build rubiod.gemspec gem install rubiod-version.gem
-
Or add following line to Gemfile (if it’s in use):
gem 'rubiod', :git => 'https://github.com/McBen/rubiod.git'
Some examples of work with rubiod
require 'rubygems' require 'rubiod'
Document initializer takes a path to file or any IO object
spread = Rubiod::Spreadsheet.new('path/to/file.ods') File.open('path/to/file.ods', 'r') do |f| Rubiod::Spreadsheet.new(f) end
RubiOD allows to work separately with worksheets and rows of document:
worksheet = spread['Worksheet'] worksheet = spread[0] row = spread[0, 10] row = worksheet[10]
puts spread['Worksheet', 0, 0] puts worksheet[0, 0] puts row[0]
Setting new value in a cell:
spread[0, 1, 5] = 'new data' worksheet[1, 5] = 10 row[5] = object
Inserting new row after specified one, applying the same formatting:
worksheet.insert 10
Deleting an entire row (with shifting lower ones up):
worksheet.delete 11
Using names cells
oldvalue = spread.labels["myCell"].value spread.labels["myCell"] = "new value"
spread.save
Loading a template, render some text into it and send the file to the client:
class myController def downloadSpreadsheet report = Rubiod::Spreadsheet.new("app/templates/spread.ots") table = report["Table1"] table[1,1] = @order.customer.name table[1,3] = @order.customer_reference send_data report.generate, type: 'application/vnd.oasis.opendocument.spreadsheet', disposition: 'attachment', filename: 'your_file.ods' end end
RubiOD is released under the MIT license.