Ruby Roo Gem - прочитайте лист Excel xlsx в Hash - PullRequest
0 голосов
/ 16 октября 2018

Я застрял - мне нужно прочитать лист Excel в хеш, я решил использовать гем ROO, но я не могу понять документацию.Пожалуйста, смотрите ниже:

Я получил таблицу Excel:

Fruits   Qty   Location
apples   5     Kitchen
pears    10    Bag
plums    15    Backpack

Я хотел бы получить это в массив хэшей:

myhash =[
{Fruits: "apples", Qty: 5, Location: "Kitchen"},
{Fruits: "pears", Qty: 10, Location: "Bag"},
{Fruits: "plums", Qty: 15, Location: "Backpack"}
}

Теперь в документации по ROO янашел это:

Use sheet.parse to return an array of rows. Column names can be a String or a Regexp.

sheet.parse(id: /UPC|SKU/, qty: /ATS*\sATP\s*QTY\z/)
# => [{:id => 727880013358, :qty => 12}, ...]

Но когда я попробовал следующий код, я получил ошибку: «неопределенная локальная переменная или метод« sheet »для main: Object (NameError)»

require 'roo'
workbook = Roo::Spreadsheet.open './fruits.xlsx'
workbook.default_sheet = workbook.sheets.first
sheet.parse(Fruits: "Fruits", Qty: "Qty", Location:"Location", clean:true)

Я знаю, что мне нужно как-то определить лист, но сначала я не могу найти никаких примеров в документации.и второе:

Almost all methods have an optional argument sheet. If this parameter is omitted, the default_sheet will be used.

Я не против использовать любой другой драгоценный камень, который имеет лучшую документацию и может работать как с документами xls, так и с документами xslx

Пожалуйста, помогите, Спасибо заранее

1 Ответ

0 голосов
/ 16 октября 2018

Работа на листе

# Open the workbook
wb = Roo::Spreadsheet.open '/Users/ankur/Desktop/wb.xlsx'
# Get first sheet
sheet = wb.sheet(0)
# Call #parse on that
sheet.parse(Fruits: "Fruits", Qty: "Qty", Location:"Location", clean:true)
#=> [{:Fruits=>"apples", :Qty=>5, :Location=>"Kitchen"}, {:Fruits=>"pearls", :Qty=>10, :Location=>"Bag"}, {:Fruits=>"plums", :Qty=>15, :Location=>"Bagpack"}]
...