1

Rubyで実装していますが、CSVファイルで読みたいだけです。私のCSVは次のようになります:

"official_code","username","lastname","firstname","email","Course Groups","password"
"1626","000078sr","LENS","Ser","blab@hogent.be","project1g43","pwd7975"
"7334","000116jd","DE ","Joen","je0116@.hogent.be","project1g08","pwd5259"
"2003","000136bv","VACKE","Bert","hogent.be","project1g18","pwd5908"
"4065","000166cr","ROHøJ","Chrian","chrhogent.be","project1g10","pwd5000"

Excelで作成され、CSVファイルに設定されます

しかし、私のアプリケーションで行う場合:

 FasterCSV.foreach(file.path, {:headers=>true }) do |row|

            @samples[i] = row
      i += 1
    end # do

 if @samples.size > 0
      @headers = @samples[0].headers
    end 

そして私の見解では、私はただします:

<%= @headers.inspect %>


<ul>
<% @samples.each do |a| %>
<li>
<%= a %>
</li>
<% end %>
</ul>

私は得る:

["\"official_code\",\"username\",\"lastname\",\"firstname\",\"email\",\"Course Groups\",\"password\""]

"""1626"",""000078sr"",""ENS"",""Sder"",""san.hogent.be"",""project1g43"",""pwd7975"""
"""7334"",""000116jd"",""DE VOS"",""Jen"",""jeroen.ogent.be"",""project1g08"",""pwd5259"""
"""2003"",""000136bv"",""VYCKE"",""Bet"",""berent.hogent.be"",""project1g18"",""pwd5908"""
"""4065"",""000166cr"",""ROøJ"",""Chstian"",""chr.hogent.be"",""project1g10"",""pwd5000"""

したがって、多くの「」への道があります。誰かが私が間違っていることを知っていますか?それは、行に1つの列しかないのと同じです。私がそうするsamples[0].eachと、1つの項目しか得られません。列ではなく、行全体になります。

4

1 に答える 1

0

参照@samplesすると、の配列が表示されます。各行は、解析されたフィールドの配列です。

したがって、を使用する@samples.each do |a|a、は行になり、その行を呼び出した結果が得られると思います#inspect

このようなことをしようとするとどうなりますか?

options = { :headers=>true, :return_headers => true }
@samples = FasterCSV.read(file.path, options).to_a

if @samples.size > 0
  @headers = @samples.shift 
end 

:return_headers=>true実際のラベルを取得する場合に必要です。:headers=>trueFasterCSVに見出しがあることを通知するだけで、デフォルトでそれらを破棄します。FasterCSV.read1回のヒットですべてのデータを取得して解析します。これは、配列を自分で作成するよりも簡単です。最後にあることに注意してくださいto_a。これにより、結果が実際に配列になります。次の部分で作業が簡単になる可能性があります。

ビューを次のように変更するとどうなりますか(ヘッダーの#join代わりに使用し、行にを追加します)?#inspect#join

<%= @headers.join(', ') %>

<ul>
<% @samples.each do |a| %>
<li>
<%= a.join(', ') %>
</li>
<% end %>
</ul>

それでも問題が解決しない場合は、少なくとも何が起こっているのかをさらに理解する必要があります...

于 2011-12-01T10:33:22.423 に答える