class EasyAxlsx::Builder

Public Class Methods

build(items) click to toggle source

@api public @return [EasyAxlsx::Building]

# File lib/easy_axlsx/builder.rb, line 7
def self.build(items)
  @row_items = items

  @class = items.first.class

  init_package
  init_workbook
  init_workbook_styles

  fill_package

  Building.new row_items: @row_items, package: @package
end

Private Class Methods

fill_package() click to toggle source

Наполняет @package данными

# File lib/easy_axlsx/builder.rb, line 53
def self.fill_package
  fill_workbook

  @package
end
fill_workbook() click to toggle source

Наполняет @workbook данными

# File lib/easy_axlsx/builder.rb, line 61
def self.fill_workbook
  init_worksheet
  fill_worksheet

  @workbook
end
fill_worksheet() click to toggle source

Наполняет @worksheet данными

# File lib/easy_axlsx/builder.rb, line 70
def self.fill_worksheet
  order_items_rows_params = @row_items.map do |item|
    @class.easy_axlsx_fields.map { |method| item.send(method) }
  end

  order_items_rows_params.each do |row_params|
    @worksheet.add_row row_params
  end

  @worksheet
end
init_package() click to toggle source

Create @package variable @return [Axlsx::Package]

# File lib/easy_axlsx/builder.rb, line 23
def self.init_package
  @package = Axlsx::Package.new
end
init_workbook() click to toggle source

Add workbook to package. Create @workbook variable @return [Axlsx::Workbook]

# File lib/easy_axlsx/builder.rb, line 30
def self.init_workbook
  @workbook = @package.workbook
end
init_workbook_styles() click to toggle source

Add styles to workbook @return [Hash] styles

# File lib/easy_axlsx/builder.rb, line 37
def self.init_workbook_styles
  @workbook_styles ||= {
    wrap_text:   @workbook.styles.add_style(alignment: { horizontal: :left, vertical: :center, wrap_text: true })
  }
end
init_worksheet() click to toggle source
# File lib/easy_axlsx/builder.rb, line 44
def self.init_worksheet
  @worksheet ||= @workbook.add_worksheet(name: "#{@class}") do |sheet|
    sheet.add_row @class.easy_axlsx_fields, style:  @workbook_styles.fetch(:wrap_text), height: 60
    sheet.column_widths(*@class.easy_axlsx_widths)
  end
end