我正在尝试根据两个标准返回特定的单元格值。
逻辑:
If ClientID = 1 and BranchID = 1, puts SurveyID
使用 Ruby 1.9.3,我想基本上查看一个 excel 文件,对于位于ClientID
andBranchID
列中的两个特定值,返回列中的相应值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
?