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