class Blazer::ExcelParser
Attributes
excel[R]
query[R]
Public Class Methods
new(query, columns, rows)
click to toggle source
# File lib/blazer/excel_parser.rb, line 4 def initialize(query, columns, rows) @query = query @columns = columns @rows = rows @excel = ::Axlsx::Package.new end
Public Instance Methods
export()
click to toggle source
# File lib/blazer/excel_parser.rb, line 11 def export load_data! save_file! end
Private Instance Methods
blazer_time_value(key, value)
click to toggle source
# File lib/blazer/excel_parser.rb, line 35 def blazer_time_value(key, value) value_with_time_zone = (value.in_time_zone(Blazer.time_zone) rescue value) if key.end_with?('_date') value_with_time_zone.strftime("%Y/%m/%d") elsif key.end_with?('_time') value_with_time_zone.strftime("%H:%M") elsif data_source.local_time_suffix.any? { |s| key.ends_with?(s) } value.to_s.sub(" UTC", "") else value_with_time_zone end rescue return value end
load_data!()
click to toggle source
# File lib/blazer/excel_parser.rb, line 20 def load_data! excel.workbook.add_worksheet(name: "ID #{query.id}") do |sheet| sheet.add_row @columns @rows.each do |row| sheet.add_row row.each_with_index.map { |v, i| v.is_a?(Time) ? blazer_time_value(@columns[i], v) : v } end end end
save_file!()
click to toggle source
# File lib/blazer/excel_parser.rb, line 29 def save_file! tmp_file = Tempfile.new.path excel.serialize(tmp_file) return tmp_file end