2 つの基準に基づいて特定のセル値を返そうとしています。
ロジック:
If ClientID = 1 and BranchID = 1, puts SurveyID
Ruby 1.9.3を使用して、基本的にExcelファイルを調べて、ClientID
andBranchID
列内にある2つの特定の値について、列に対応する値を返しSurveyID
ます。
これは私がこれまでに持っているもので、オンライン検索中に見つけました。有望に思えたが、運が悪かった:
require 'csv'
# Load file
csv_fname = 'FS_Email_Test.csv'
# Key is the column to check, value is what to match
search_criteria = { 'ClientID' => '1',
'BranchID' => '1' }
options = { :headers => :first_row,
:converters => [ :numeric ] }
# Save `matches` and a copy of the `headers`
matches = nil
headers = nil
# Iterate through the `csv` file and locate where
# data matches the options.
CSV.open( csv_fname, "r", options ) do |csv|
matches = csv.find_all do |row|
match = true
search_criteria.keys.each do |key|
match = match && ( row[key] == search_criteria[key] )
end
match
end
headers = csv.headers
end
# Once matches are found, we print the results
# for a specific row. The row `row[8]` is
# tied specifically to a notes field.
matches.each do |row|
row = row[1]
puts row
end
次のコードの最後のビットmatches.each do |row|
が無効であることはわかっていますが、他の誰かにとって意味があることを期待して残しました。
どのように書くことができますputs surveyID if ClientID == 1 & BranchID == 1
か?