0

さて、私はRubyをかなりいじっていますが、それでもかなり新しいです。現在のプログラムで問題が発生しています。私がやりたいのは、用語のリストを含むCSVファイルを取得し、次にcsvファイルを取得してそれらの用語の配列を作成することです。これらの用語を配列に入れたら、Excelブックを検索して、その用語のすべての出現箇所をすべてのシートで見つけたいと思います。用語が見つかった場合は、シート名とセルの場所が記載されたcsvファイルに追加されます。かなり良いスタートを切ったと思います。

編集:私はもうエラーを受け取っていません。指定されたファイルを再作成するだけです。ブックにドロップして比較を行っているようには見えませんか?何か案は?

編集2:使用されたprintステートメントは、文字列が等しい条件である場合、私の問題です。

編集3:私は私の比較に問題を分離しました。term変数を使用すると、asという用語を取得し、["theterm"]それを常にfalseになる文字列と比較しようとします...

私のコードは以下の通りです:

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
4

1 に答える 1

0

私は自分の問題を修正して見つけました。用語のリストを作成するときに、誤って配列の配列を作成していました。以下のコードですが、特にデータが複数の列にある場合などは、最適ではない可能性があります。

CSV.foreach( "#{termspath}") do |row|  
  #Will only take first item in first column of each row
  string = row[0.to_i].to_s
  $termsarray << string
end
于 2012-08-28T13:58:40.053 に答える