Difference between revisions of "Ruby Examples"
Jump to navigation
Jump to search
PeterHarding (talk | contribs) (Created page with '=Skelton= <pre> #!/usr/bin/env ruby </pre> =Excel= ==Simple Operations== <pre> #!/usr/bin/env ruby # # Purpose: Exercise a few simple operations... # #------------------...') |
PeterHarding (talk | contribs) |
||
| (One intermediate revision by the same user not shown) | |||
| Line 240: | Line 240: | ||
[ 1, 2, 3, 4, 5 ].sum # » 15 | [ 1, 2, 3, 4, 5 ].sum # » 15 | ||
[ 1, 2, 3, 4, 5 ].product # » 120 | [ 1, 2, 3, 4, 5 ].product # » 120 | ||
</pre> | |||
<pre> | |||
$ cat stocks.rb | |||
#!/usr/bin/env ruby | |||
require 'rubygems' | |||
require 'pp' | |||
require 'open-uri' | |||
require 'fastercsv' | |||
def historical_stock_prices(code) | |||
url = "http://finance.google.com/finance/historical?q=NASDAQ:#{code}&output=csv" | |||
data = open(url).read | |||
csv = FasterCSV.parse data, :headers=>true, :converters=>:numeric | |||
csv.map { |r| r.to_hash } | |||
end | |||
if __FILE__ == $0 | |||
pp historical_stock_prices(ARGV.first) | |||
end | |||
code = 'GOOG' | |||
</pre> | </pre> | ||
| Line 245: | Line 272: | ||
[[Category:Ruby]] | [[Category:Ruby]] | ||
[[Category:Examples]] | [[Category:Examples]] | ||
[[Category:Microsoft Office Automation]] | |||
Latest revision as of 09:03, 15 May 2010
Skelton
#!/usr/bin/env ruby
Excel
Simple Operations
#!/usr/bin/env ruby
#
# Purpose: Exercise a few simple operations...
#
#--------------------------------------------------------------------------
require 'win32ole'
# You can, of course, iterate over the Workbooks collection:
#
# for workbook in excel.Workbooks
# # ...code...
# end
excel = WIN32OLE.new('Excel.Application')
excel.visible = TRUE
book = excel.Workbooks.Add();
# book = excel.ActiveWorkbook
sheet = book.Worksheets(1);
sheet.Name = "Directions"
sheet.Range('A1:D1').value = ['North','South','East','West'];
book.SaveAs('C:\temp\Workbook.xls')
book.Close
book = excel.Workbooks.Open('C:\temp\Workbook.xls')
sheet = book.Worksheets(1);
sheet.setproperty('Cells', 3, 2, 10) # => The B1 cell value is 10.
book.Save
book.Close
excel.quit
# lose the reference so that excel can be garbage collected
excel = nil
# ...and collect it.
GC.start
Two
#!/usr/bin/env ruby
#
# Purpose: Exercise a few simple operations...
#
#--------------------------------------------------------------------------
require 'win32ole'
excel = WIN32OLE.new('Excel.Application')
excel.visible = TRUE
book = excel.Workbooks.Add();
sheet = book.Worksheets('Sheet1');
sheet.Name = "Directions"
sheet.Range('A1:D2').value = [['North','South','East','West'],[1,2,3,4]];
# book.Worksheets('Sheet2').delete
# book.Worksheets('Sheet3').delete
book.SaveAs('C:\temp\Workbook.xls')
book.Close
excel.quit
Three
#!/usr/bin/env ruby
#
# Purpose: Exercise a few simple chart operations...
#
#--------------------------------------------------------------------------
require 'win32ole'
excel = WIN32OLE.new('Excel.Application')
excel.visible = TRUE
book = excel.Workbooks.Add();
sheet = book.Worksheets('Sheet1');
sheet.Name = "Directions"
sheet.Range('A1:D2').value = [['North','South','East','West'],[1,2,3,4]];
# book.Worksheets('Sheet2').delete
# book.Worksheets('Sheet3').delete
chart = book.Charts.add
chart.name = '3D Pie Graph'
puts chart.Type
chart.Type = -4102
# 1 Area
# 2 Horizontal Bar
# 3 Vertical Bar
# 4 Line with markers
# 5 2D Pie
# 6 2D Ring
# -4102 xl3DPie
chart.SeriesCollection(1).Name = 'XYZZY'
book.SaveAs('C:\temp\Workbook.xls')
book.Close
excel.quit
Open.rb
#!/usr/bin/env ruby
require 'win32ole'
puts "Win32OLE Demo...\n";
application = WIN32OLE.new('Excel.Application')
application.visible = TRUE
workbook = application.Workbooks.Open('C:\QC_Reporting\wrk\SQM_Report__V1_0.xls');
worksheet = workbook.Worksheets(1);
# worksheet.Range('A1:D1').value = ['North','South','East','West'];
win.rb
#!/usr/bin/env ruby
require 'win32ole'
puts "Win32OLE Demo...\n";
application = WIN32OLE.new('Excel.Application')
application.visible = TRUE
workbook = application.Workbooks.Add();
worksheet = workbook.Worksheets(1);
worksheet.Range('A1:D1').value = ['North','South','East','West'];
Modules
#!/usr/bin/env ruby
module Debug
def whoAmI?
"#{self.type.name} (\##{self.id}): #{self.to_s}"
end
end
class Phonograph
include Debug
# ...
end
class EightTrack
include Debug
# ...
end
ph = Phonograph.new("West End Blues")
et = EightTrack.new("Surrealistic Pillow")
ph.whoAmI? » "Phonograph (#537766170): West End Blues"
et.whoAmI? » "EightTrack (#537765860): Surrealistic Pillow"
$
#!/usr/bin/env ruby
#
# http://www.rubycentral.com/pickaxe/tut_modules.html
#
#===================================================================================
module Inject
def inject(n)
each do |value|
n = yield(n, value)
end
n
end
def sum(initial = 0)
inject(initial) { |n, value| n + value }
end
def product(initial = 1)
inject(initial) { |n, value| n * value }
end
end
Class Array
include Inject
end
[ 1, 2, 3, 4, 5 ].sum # » 15
[ 1, 2, 3, 4, 5 ].product # » 120
$ cat stocks.rb
#!/usr/bin/env ruby
require 'rubygems'
require 'pp'
require 'open-uri'
require 'fastercsv'
def historical_stock_prices(code)
url = "http://finance.google.com/finance/historical?q=NASDAQ:#{code}&output=csv"
data = open(url).read
csv = FasterCSV.parse data, :headers=>true, :converters=>:numeric
csv.map { |r| r.to_hash }
end
if __FILE__ == $0
pp historical_stock_prices(ARGV.first)
end
code = 'GOOG'