私はレールアプリでルビーを開発しており、そのためにExcelファイルをインポートする必要があります。私はスプレッドシートの宝石を使用しています。
私の問題は、Excelファイルから単一の行データを取得できないということです。どのようにレールで1つのExcelの行データを解析する
私のコードはここにある:
def actual_import(file)
puts "In the actual_import method"
spreadsheet= Employee.open_spreadsheet(file)
header=spreadsheet.row(1)
(2..spreadsheet.last_row).each do |i|
row=Hash[[header,spreadsheet.row(i)].transpose]
$send_name=row.to_hash.slice('firstname')
puts $send_name.to_s #this prints a weird result,,described below
puts $send_name.length
create
end
end
、従業員のモデルで私のopen_spreadsheet方法は次のとおりです。
def self.open_spreadsheet(file)
case File.extname(file.original_filename)
#when ".csv" then Roo::Csv.new (file.path nil, :ignore)
when ".xlsx" then Roo::Excelx.new (file.path)
#when ".xlsx" then Excelx.new (file.path, nil, :ignore)
else raise "Unknown file type: #{file.original_filename}"
end
end
今$send_name
プリント{"firstname"=>"Abc"}
と私は$send_name.length
を使用する場合、それは私に1を与えます。しかし、私は "Abc"だけをキャプチャする必要があります。
私のExcelファイルには、firstnameという名前の列が1つだけ含まれています。しかし、私は文字列として各反復の行データだけを必要とします。
この問題を解決するにはどうすればよいですか?
おかげで,,,私のためにその作業を実装するためにあなたも
factory.rows.map
でrows
を省略することができますUPDATE
。 – Abhradip