class SpreadsheetToJson::SheetToJson

Attributes

spreadsheet[R]

Public Class Methods

new(spreadsheet) click to toggle source
# File lib/spreadsheet_to_json/sheet_to_json.rb, line 5
def initialize(spreadsheet)
  @spreadsheet = spreadsheet
end

Public Instance Methods

convert_a_worksheet_by_id(worksheet_id, keys_row_num) click to toggle source

Convert a total sheet to json by worksheet id

# File lib/spreadsheet_to_json/sheet_to_json.rb, line 38
def convert_a_worksheet_by_id(worksheet_id, keys_row_num) 
  worksheet = spreadsheet.get_sheet_by_id(worksheet_id)
  rows_to_json(
    worksheet,
    [*keys_row_num+1..worksheet.num_rows],
    keys_row_num
  )
end
convert_a_worksheet_by_name(worksheet_name, keys_row_num) click to toggle source

Convert a total sheet to json by worksheet name

# File lib/spreadsheet_to_json/sheet_to_json.rb, line 28
def convert_a_worksheet_by_name(worksheet_name, keys_row_num) 
  worksheet = spreadsheet.get_sheet_by_name(worksheet_name)
  rows_to_json(
    worksheet,
    [*keys_row_num+1..worksheet.num_rows],
    keys_row_num
  )
end
convert_rows_by_sheet_id(worksheet_id, rows, keys_row_num) click to toggle source

Convert the selected rows to json with worksheet id, keys_row_num is the sheet's first row number with keys

# File lib/spreadsheet_to_json/sheet_to_json.rb, line 10
def convert_rows_by_sheet_id(worksheet_id, rows, keys_row_num)
  rows_to_json(
    spreadsheet.get_sheet_by_id(worksheet_id),
    rows,
    keys_row_num
  )
end
convert_rows_by_sheet_name(worksheet_name, rows, keys_row_num) click to toggle source

Convert the selected rows to json with worksheet name

# File lib/spreadsheet_to_json/sheet_to_json.rb, line 19
def convert_rows_by_sheet_name(worksheet_name, rows, keys_row_num)
  rows_to_json(
    spreadsheet.get_sheet_by_name(worksheet_name),
    rows,
    keys_row_num
  )
end
output_json_file(content, output_path) click to toggle source

Write the json to a file

# File lib/spreadsheet_to_json/sheet_to_json.rb, line 48
def output_json_file(content, output_path)
  unless File.exist?(output_path)
    File.new(output_path, 'w+')
  end
  File.open(output_path, 'w+') {|file| file.write(content) }
end

Private Instance Methods

construct_hash(worksheet, keys_row_num, row=1) click to toggle source

Construct a hash with one row. param row is the constructed row number

# File lib/spreadsheet_to_json/sheet_to_json.rb, line 62
def construct_hash(worksheet, keys_row_num, row=1)
  if row < 1
    puts "Illeagal row num"
    exit
  end
  
  begin
    json_keys = worksheet.list[keys_row_num].to_hash.values
  rescue NoMethodError
    puts "Worksheet does not exist"
    exit
  end
  json_values = worksheet.list[row].to_hash.values
  Hash[json_keys.zip(json_values)]
end
rows_to_json(worksheet, rows, keys_row_num) click to toggle source

Construct rows to json content

# File lib/spreadsheet_to_json/sheet_to_json.rb, line 57
def rows_to_json(worksheet, rows, keys_row_num)
  rows.map { |row_num| construct_hash(worksheet, keys_row_num-2, row_num-2) }.to_json
end