Adding Excel xlsx support and prefixed images

* New sample!
* New API function!
* Ignoring _img in samples
This commit is contained in:
Andy Meneely
2014-07-16 15:32:48 -04:00
parent f778b2f920
commit 0e351754f3
9 changed files with 46 additions and 47 deletions
+20 -5
View File
@@ -1,4 +1,4 @@
require 'spreadsheet'
require 'roo'
module Squib
class Deck
@@ -7,8 +7,23 @@ module Squib
raise 'Not implemented!'
end
def xls(file: 'data.xls', sheet: 0)
end
def xlsx(file: 'deck.xlsx', sheet: 0)
s = Roo::Excelx.new(file)
s.default_sheet = s.sheets.first
data = {}
s.first_column.upto(s.last_column) do |col|
header = s.cell(s.first_row,col).to_s
data[header] = []
(s.first_row+1).upto(s.last_row) do |row|
cell = s.cell(row,col)
# Roo hack for avoiding unnecessary .0's on whole integers
cell = s.excelx_value(row,col) if s.excelx_type(row,col) == [:numeric_or_formula, "General"]
data[header] << cell
end#row
end#col
data
end#xlsx
end
end
end
+4 -4
View File
@@ -1,15 +1,15 @@
module Squib
class Deck
def save(range: :all, format: :png)
def save(range: :all, format: :png, prefix: "card_")
format = [format].flatten
save_png(range: range) if format.include? :png
save_png(range: range, prefix: prefix) if format.include? :png
save_pdf if format.include? :pdf
end
def save_png(range: :all)
def save_png(range: :all, dir: "_img", prefix: 'card_')
range = rangeify(range)
range.each { |i| @cards[i].save_png(i) }
range.each { |i| @cards[i].save_png(i, dir, prefix) }
end
end