好的,所以我一直在玩弄 Ruby,但对它还是很陌生。我当前的程序遇到了问题。我想要它做的是获取包含术语列表的 CSV 文件,然后获取 csv 文件并创建这些术语的数组。一旦我在数组中有这些术语,我想搜索 Excel 工作簿并找到该术语的所有出现......在所有工作表中。如果找到一个术语,它将被附加到一个 csv 文件中,其中包含找到它的工作表名称和单元格位置。我认为我有一个相当好的开始。
编辑:我不再收到任何错误。它只是简单地重新创建给定的文件。它似乎没有放入工作簿并进行比较?有任何想法吗?
编辑 2:使用打印语句,我的 if 字符串是等于条件有问题。
编辑 3:我将这个问题隔离到我的比较中。当我使用term
变量时,它会获取术语 as["theterm"]
然后尝试将其与始终为假的字符串进行比较...
我的代码如下:
require 'roo'
$termsarray = Array.new
puts "Please enter filepath of file of terms (C:/path/to/file.csv)"
#termspath = gets.chomp.to_s
termspath = "C:/Ruby/termslist.csv"
CSV.foreach( "#{termspath}") do |row|
$termsarray << row
end
puts "Added terms to array successfully"
puts "Please enter filepath of file to cross-reference (C:/path/to/file.xlsx)"
#filepath = gets.chomp.to_s
filepath = "C:/Ruby/file_to_crossreference.xlsx"
puts "Please enter filepath for output file (C:/path/to/file.csv)"
output = gets.chomp.to_s
w1 = Excelx.new ( "#{filepath}" )
CSV.open( "#{output}", "w") do |csv|
$termsarray.each do |term|
csv << term
w1.sheets.each do |sheet|
w1.default_sheet = sheet
if w1.first_row && w1.first_column
eval(w1.to_s).each do |index, value|
if term.to_s.chomp.eql? value.to_s.chomp
csv << [sheet, convert_index(index.to_s), value]
end
end
end
end
end
print "File Indexed Successfully!"
end