user2449984
user2449984

Reputation: 1005

How do I create a CSV file without the CSV class?

I'm using a Mac OSX version 10.8

I'm trying to create a CSV file the old fashion way, but there is a bug in my code. It should create a spreadsheet with three rows, i.e., header, and two rows of data beneath it:

File.open('table.csv', 'w') do |f|
    f.puts.each {|line| puts line}
    'Date','Open','High','Low','Close','Volume','Adj Close'
    '10/8/2013','1676.22','1676.79','1655.03','1655.45','3569230000','1655.45'
    '10/7/2013','1687.15','1687.15','1674.7','1676.12','2678490000','1676.12'
end

Can someone fix this so that it works and explain what I am doing wrong.

Thanks

Upvotes: 0

Views: 87

Answers (2)

bundacia
bundacia

Reputation: 1036

Try putting your data in an array and then loop over it like this:

data = [                                                                      
  ['Date','Open','High','Low','Close','Volume','Adj Close'],                  
  ['10/8/2013','1676.22','1676.79','1655.03','1655.45','3569230000','1655.45']
  ['10/7/2013','1687.15','1687.15','1674.7','1676.12','2678490000','1676.12'],
]                                                                             
File.open('table.csv', 'w') do |f|                                            
  data.each{|line| f.puts line.join(',')}                                     
end                                                                           

Upvotes: 0

anonymous
anonymous

Reputation: 11

File.open('table.csv', 'w') do |csv|
csv << ["Date","Open","High","Low","Close","Volume","Adj Close"]
csv << ["10/8/2013","1676.22","1676.79","1655.03","1655.45","3569230000","1655.45"] 
csv << ["10/7/2013","1687.15","1687.15","1674.7","1676.12","2678490000","1676.12"]
end

This should work. You don't need an array.

Upvotes: 1

Related Questions