Ruby on rails 将读取解析脚本从.csv更改为.xls
我有一个解析csv文件的现有脚本。。。但我的来源现在已经开始发送xls文件 关于更改此脚本以解析xls文件的任何建议Ruby on rails 将读取解析脚本从.csv更改为.xls,ruby-on-rails,csv,xls,Ruby On Rails,Csv,Xls,我有一个解析csv文件的现有脚本。。。但我的来源现在已经开始发送xls文件 关于更改此脚本以解析xls文件的任何建议 def parse_csv(filename) lines = CSV.read(filename) header = lines.shift raise EdiLoadsFileEmpty if header.nil? posts = [] lines.each do |line| post = Hash[header.zip line] p
def parse_csv(filename)
lines = CSV.read(filename)
header = lines.shift
raise EdiLoadsFileEmpty if header.nil?
posts = []
lines.each do |line|
post = Hash[header.zip line]
posts.push post
end
posts
end
这就是我现在拥有的史蒂夫
def parse_csv(文件名)
工作簿=Roo::Excel.new(文件名)
工作簿.default_sheet=工作簿.sheets[0]
页眉=工作簿。行(1)
如果header.nil为空,是否引发EdiLoadsFileEmpty?
放头球
职位=[]
(2.工作簿。最后一行)。每一行|
post=Hash[header.zip(workbook.row(i))]
postsroo gem打开Excel、Excelx、Google电子表格、OpenOffice和CSV
if File.extname(filename) == "xls"
workbook = Roo::Excel.new(filename)
else
workbook = Roo::CSV.new(filename)
end
workbook.default_sheet = workbook.sheets[0]
然后使用workbook.row
方法处理每一行
((workbook.first_row + 1)..workbook.last_row).each do |lines|
...
end
编辑我记得每个和roo gem都有一个问题。。。试试这个
(2..workbook.last_row).each do |i|
post = Hash[header.zip(workbook.row(i))]
posts << post
end
(2..工作簿。最后一行)。每个都要|
post=Hash[header.zip(workbook.row(i))]
那么我还能像以前一样抓取块中的页眉吗?是的,你不能移动我不认为(至少我从未尝试过),但它将是工作簿。第(1)行,所以只需执行header=workbook.row(1)
然后您只需遍历第2行到工作簿。最后一行
。名称错误:未定义的局部变量或EdiLoads的方法“i”:Classdarn darn。。。将第一次出现的i
更改为|i |
(请参阅我编辑的答案)对此表示抱歉。再次更新了我的帖子。。。现在它通过了。。。但不解析任何数据