我正在使用 ruby 1.9.2p290 运行 rails 3.0.1 并尝试使用 CSV 解析 CSV 文件(据我了解,CSV 现在使用的是 fasterCSV 代码)。
我正在关注一篇关于为 fastCSV 设置它的好文章,只需要进行微小的更改即可使其正常工作(将要求更改为 CSV 而不是 fastCSV 等)
我可以让 csv 文件加载到一个表中,并计算出正确的列数,但不管有多少行,它都是一行。例如,如果我的 csv 文件有三行和三列,我的 import_table 将显示列号 0、1、2 三次而不增加行号。所以它确实识别出我的 csv 文件每一行的结尾,但不会增加行计数器。我错过了什么?
我的 csvcontroller 看起来像这样:
require 'csv'
class Admin::CsvController < ApplicationController
def import
end
def upload
table = ImportTable.new :original_path => params[:upload][:csv].original_filename,
:import_type => params[:type]
uploaded_file = params[:upload][:csv].read
CSV.parse(uploaded_file) do |cells|
row_index = 0
column_index = 0
cells.each do |cell|
table.import_cells.build :column_index => column_index, :row_index => row_index, :contents => cell
column_index += 1
end
row_index += 1
end
table.save
redirect_to import_table_path(table)
end
end
我尝试使用 .readline 而不是 .read,但这又打开了另一个蜡球。