Ruby Examples
Jump to navigation
Jump to search
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'