Sha256: 4f9377b37db96935d9f16e90156e647ba5ebab0dbb4c8361d67676910cefb14c

Contents?: true

Size: 782 Bytes

Versions: 3

Compression:

Stored size: 782 Bytes

Contents

require "axlsx"

class Dorsale::Serializers::XLSX < Dorsale::Serializers::Base
  def render_inline
    xlsx.to_stream.read.force_encoding("BINARY")
  end

  def render_file(file_path)
    xlsx.serialize(file_path)
  end

  def xlsx
    @xlsx ||= Axlsx::Package.new do |p|
      p.workbook.add_worksheet do |sheet|
        data.each do |line|
          values = line.map do |value|
            if value.is_a?(Integer)
              value
            elsif value.is_a?(Numeric)
              value.to_f # Fix BigDecimal
            elsif value == true || value == false
              I18n.t(value.to_s)
            else
              value.to_s
            end
          end

          sheet.add_row(values)
        end
      end

      p.use_shared_strings = true
    end
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dorsale-3.4.0 app/serializers/dorsale/serializers/xlsx.rb
dorsale-3.3.0 app/serializers/dorsale/serializers/xlsx.rb
dorsale-3.2.0 app/serializers/dorsale/serializers/xlsx.rb