Sha256: 9a62179759ebdbd8694ef180fb2dd1926e5a39615a5d34e8fe563472c0d06191

Contents?: true

Size: 767 Bytes

Versions: 7

Compression:

Stored size: 767 Bytes

Contents

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

7 entries across 7 versions & 1 rubygems

Version Path
agilibox-1.0.7 app/serializers/agilibox/serializers/xlsx.rb
agilibox-1.0.6 app/serializers/agilibox/serializers/xlsx.rb
agilibox-1.0.5 app/serializers/agilibox/serializers/xlsx.rb
agilibox-1.0.4 app/serializers/agilibox/serializers/xlsx.rb
agilibox-1.0.3 app/serializers/agilibox/serializers/xlsx.rb
agilibox-1.0.2 app/serializers/agilibox/serializers/xlsx.rb
agilibox-1.0.1 app/serializers/agilibox/serializers/xlsx.rb