class MergeExcel::WBook
Attributes
settings[R]
sheets[R]
Public Class Methods
new(settings)
click to toggle source
# File lib/merge_excel/wbook.rb, line 5 def initialize(settings) @sheets = Sheets.new @settings = settings end
Public Instance Methods
export(filepath)
click to toggle source
# File lib/merge_excel/wbook.rb, line 28 def export(filepath) print "Exporting data..." SpreadsheetWriter.create(filepath) do |wb| @sheets.each_with_index do |sheet, sheet_idx| s = wb.add_worksheet_at(sheet_idx, sheet.name) if sheet.header s.add_row_at(0, sheet.header) offset = 1 else offset = 0 end sheet.data_rows.each_with_index do |data_row, row_idx| s.add_row_at(row_idx+offset, data_row) end end end puts "finished!" end
import_data(filepath)
click to toggle source
# File lib/merge_excel/wbook.rb, line 10 def import_data(filepath) book = SpreadsheetParser.open(filepath) filename = File.basename(filepath) book.worksheets.each_with_index do |sheet, idx| if @settings.read_sheet? idx sh_stt = @settings.data_rows.get(idx) sh = select_sheet(idx) || create_sheet(sheet, idx, sh_stt) row_idx = sh_stt.data_starting_row loop do break unless cells = sheet.row_values(row_idx, sh_stt.data_first_column, sh_stt.data_last_column) sh.add_data_row(cells, @settings.extra_columns.get(idx), book) row_idx+=1 end end end end
Private Instance Methods
create_sheet(sheet, idx, sh_stt)
click to toggle source
# File lib/merge_excel/wbook.rb, line 54 def create_sheet(sheet, idx, sh_stt) sh = Sheet.new(sheet, idx) if sh_stt.import_header? arr = sheet.row_values(sh_stt.header_row, sh_stt.data_first_column, sh_stt.data_last_column) sh.add_header(arr, @settings.extra_columns.get(idx)) end @sheets << sh sh end
select_sheet(idx)
click to toggle source
# File lib/merge_excel/wbook.rb, line 50 def select_sheet(idx) @sheets.get_sheet(original_idx: idx) end