Sha256: 1f79e5a9d514c9406e2f9c54ecf6dcee48775d49a09b82aad6152bebbc667dbb

Contents?: true

Size: 644 Bytes

Versions: 7

Compression:

Stored size: 644 Bytes

Contents

require 'arc-furnace/sink'

module ArcFurnace
  class ExcelSink < Sink
    private_attr_reader :filename, :fields, :types, :package,
      :workbook, :worksheet

    def initialize(filename: , fields:, types: nil)
      @filename = filename
      @fields = fields
      @package = Axlsx::Package.new
      @workbook = package.workbook
      @worksheet = workbook.add_worksheet(name: 'Sheet1')
      @types = types ? types : []
      worksheet.add_row(fields)
    end

    def finalize
      package.serialize(filename)
    end

    def row(hash)
      worksheet.add_row(fields.map { |field_id| hash[field_id] }, types: types)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
arc-furnace-0.1.42 lib/arc-furnace/excel_sink.rb
arc-furnace-0.1.41 lib/arc-furnace/excel_sink.rb
arc-furnace-0.1.40 lib/arc-furnace/excel_sink.rb
arc-furnace-0.1.39 lib/arc-furnace/excel_sink.rb
arc-furnace-0.1.38 lib/arc-furnace/excel_sink.rb
arc-furnace-0.1.37 lib/arc-furnace/excel_sink.rb
arc-furnace-0.1.36 lib/arc-furnace/excel_sink.rb