class XLSXToHTML::SpreadsheetParser

Public Class Methods

parse(xlsx_path, expected_headers = []) click to toggle source
# File lib/xlsx_to_html/spreadsheet_parser.rb, line 5
def self.parse(xlsx_path, expected_headers = [])
  @xlsx_path = xlsx_path
  @headers = expected_headers

  { headers: headers, rows: rows }
end

Private Class Methods

for_each_row(start_row = nil) { |row, index| ... } click to toggle source
# File lib/xlsx_to_html/spreadsheet_parser.rb, line 40
def for_each_row(start_row = nil)
  start_row = start_row.nil? ? spreadsheet.first_row : start_row
  (start_row..spreadsheet.last_row).each do |index|
    yield spreadsheet.row(index), index
  end
end
headers() click to toggle source
# File lib/xlsx_to_html/spreadsheet_parser.rb, line 15
def headers
  without_headers? ? [] : spreadsheet.row(headers_line)
end
headers_line() click to toggle source
# File lib/xlsx_to_html/spreadsheet_parser.rb, line 27
def headers_line
  return spreadsheet.header_line if without_headers? ||
    !dynamic_headers_row? || dynamic_headers_row? && @headers.empty?

  for_each_row do |row, index|
    next unless row == @headers

    return index
  end

  raise XLSXToHTML::ExpectedDataNotFound, @headers
end
rows() click to toggle source
# File lib/xlsx_to_html/spreadsheet_parser.rb, line 19
def rows
  rows = []
  for_each_row(headers_line + 1) do |row|
    rows << row
  end
  rows.reject { |arr| arr.all?(&:nil?) }
end
spreadsheet() click to toggle source
# File lib/xlsx_to_html/spreadsheet_parser.rb, line 47
def spreadsheet
  Roo::Spreadsheet.open @xlsx_path
end