将读取解析脚本从.csv更改为.xls

时间:2014-07-17 19:01:50

标签: 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]
    posts.push post
  end
  posts
end

这就是我现在所拥有的史蒂夫

def parse_csv(文件名)       workbook = Roo :: Excel.new(filename)       workbook.default_sheet = workbook.sheets [0]       header = workbook.row(1)       如果header.nil会引发EdiLoadsFileEmpty?       把头       posts = []       (2..workbook.last_row).each do | i |         post = Hash [header.zip(workbook.row(i))]         帖子<<岗位       结束       帖子     端

对我来说只是将日期从2014年7月18日重新格式化为2014年7月18日星期五

1 个答案:

答案 0 :(得分:0)

'roo'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
编辑我记得each和roo gem存在问题......试试这个

(2..workbook.last_row).each do |i|
  post = Hash[header.zip(workbook.row(i))]
  posts << post
end