Sha256: 79cbb0276a5cc24c36560551494ba603d5aa3d1ac2f8a8ab4e5ca10e8da69397

Contents?: true

Size: 784 Bytes

Versions: 1

Compression:

Stored size: 784 Bytes

Contents

require "axlsx"

class Agilibox::Serializers::XLSX < Agilibox::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

1 entries across 1 versions & 1 rubygems

Version Path
agilibox-1.0.0 app/serializers/agilibox/serializers/xlsx.rb