Accessing Excel in Ruby
July 7, 2009
Accessing Excel in Ruby
CODE:
require ‘win32ole’
excel = WIN32OLE.new(‘excel.application’)
excel.visible = true
work=excel.workbooks.open(“C:\\Documents and Settings\\raveendran\\Desktop\\output.xls”)
excel.range(“A1″).value = “name”
excel.range(“B1″).value = “address”
excel.range(“C1″).value = “city “
excel.range(“D1″).value = “state “
excel.range(“E1″).value = “zip”
work.save
OUPUT:
Ruby – convert number to english word
May 29, 2009
Ruby - convert number to english word
CODE :
class Fixnum
def english_word
@h = {0=>"zero", 1=>"One", 2=>"Two", 3=>"Three",
4=>"Four", 5=>"Five",6=>"six", 7=>"seven", 8=>"Eight",
9=>"Nine",10=>"Ten",11=>"Eleven",12=>"Twelve",
13=>"Thirteen",14=>"Fourteen",15=>"Fifteen",
16=>"Sixteen",17=>"Seventeen",18=>"Eighteen",
19=>"Nineteen",20=>"Twenty",30=>"Thirty",
40=>"Fourty",50=>"Fifty",60=>"Sixty",70=>"Seventy",
80=>"Eighty",90=>"Ninty"}
@i=0
@array=[]
@result=""a
if self > 99
str_num=self.to_s #@num.to_s
str_num_len=str_num.length
str_full_num=str_num.insert(0,"0"*(11-str_num_len))
str_full_num=str_num.insert(8,"0")
str_full_num.scan(/../) { |x| @array<<x }
6.times do
self.def_calc
@i+=1
end
else
if self > 9
puts
(self.proc_double_dig((self/10)*10))+
(self.proc_single_dig(self%10))
else
if self > 0
puts self.proc_single_dig(self)
else
return "AMOUNT NOT KNOWN or NILL"
end
end
end
end
def def_calc
case @i
when 0
str=self.proc_unit(@array[@i])
if (str.scan(/\w+/)).length!=0
then str=str+ "hundred & "
@result=@result+str
end
when 1
str=self.proc_unit(@array[@i])
if (str.scan(/\w+/)).length!=0
then str=str+ " Crore, "
@result=@result+str
end
when 2
str=self.proc_unit(@array[@i])
if (str.scan(/\w+/)).length!=0
then str=str+ " Lakh, "
@result=@result+str
end
when 3
str=self.proc_unit(@array[@i])
if (str.scan(/\w+/)).length!=0
then str=str+ " Thousand, "
@result=@result+str
end
when 4
str=self.proc_unit(@array[@i])
if (str.scan(/\w+/)).length!=0
then str=str+ " Hundred, "
@result=@result+str
end
when 5
str=self.proc_unit(@array[@i])
if (str.scan(/\w+/)).length!=0
then str=str+ ". "
@result=@result+str
end
print @result.sub(/..$/,"")
else
end
end
def proc_unit(x)
if x.to_i>0
if x.to_i<=10
return self.proc_single_dig(x.to_i)
else
if x.to_i<=20
return self.proc_double_dig(x.to_i)
else
return
(self.proc_double_dig((x.to_i/10)*10))+
(self.proc_single_dig(x.to_i%10))
end
end
end
return ""
end
def proc_double_dig(z)
if z==0
return ""
else
return @h[z]
end
end
def proc_single_dig(y)
if y==0
return ""
else
return @h[y]
end
end
protected :def_calc, :proc_unit, :proc_double_dig,
:proc_single_dig
end
puts 453645445.english_word
#FourtyFive Crore, Thirtysix Lakh, FourtyFive Thousand,
Four Hundred,FourtyFive
Note:
The above code works only up to billions.
Ruby — Array related Excercise
February 18, 2009
What is the output of the following programs
Note : Please find the answers manually
——————————————————–
1. Question 1
@a=[34,45,56,2,13,54]
@a.sort!
@a.reverse
puts @a[4] gives,
a) 13 b)54 c) 45 d) 56
——————————————————–
2. Question 2
@a=[34,45,56,2,13,54]
@a=@a.length.to_a.join
puts @a.class gives,
a) fixNum b)Array c) String d) ERROR ——————————————————–
3. Question 3
@a=[34,45,56,2,13,54]
@a=@a[5,4]
puts @a gives,
a) 13 b)54 c) 45 d) 56
——————————————————–
4. Question 4
@a=[34,45,56,2,13,54]
@a= @a.flatten
puts @a gives,
a) The reverse order b) NIL c) NULL d) Same Order
——————————————————–
5. Question 5
@a=[34,45,56,2,13,54]
@b= @a.min + @a.max + @a.first + @a.last
puts @b gives,
a) 92 b) 144 c) 146 d) 112
——————————————————–
6. Question 6
@a=[34,45,56,2,13,54]
@b= @a[2].value+@a[3].value
puts @b gives,
a) Argument Error b) 58 c) NomethodError d) 0
——————————————————–
7. Question 7
@a=[34,45,56,2,13,54]
@b= @a[2].display.to_i + @a[3].display.to_i
puts @b gives,
a) Error b) 58 c) 5620 d) 562
——————————————————–
8. Question 8
@a=[34,45,56,2,13,54]
@b= @a.rindex(13) + @a.values_at(4)[0]
puts @b gives,
a) Error b) 17 c) 47 d) 7
——————————————————–
9. Question 9
@a=[34,45,56,2,13,54]
@a.insert(6)
@a.insert(6,7)
@a << [137,89]
@b=@a.length
puts @b gives,
a) Error b) 10 c) 9 d) 8
——————————————————–
10. Question 10
@a=[34,45,56,2,13,54]
@b= @a.__id__.class
puts @b gives,
a) Error b) Array c) Nil class d) FixNum
Send your answers as a Comments of this article upto Oct 31 Result Date: Nov 1 (List of the names who scored 100%)
No need to worry about interruption when Ruby program execution.
December 9, 2008
Print 1 to 10000
Why this program need ?:
1.Run a program to print 1 to 100000
2. programs interrupted when printing 497
3. Now run once again, It starts with again 1 to … .. Right ?
4. So This is the program to avoid that issue. Enjoy the program
Code:
i=0
file=File.open(“count.html”,”a”)
x= file.stat.size
if x == 0 then
while i < 1000000
puts i
file.puts i
i+=1
end
else
s=File.readlines(“count.html”)
#s.each do |sing|
#x=sing
#end
x= s.last
i=x.to_i
i+=1
while i < 1000000
puts i
file.puts i
i+=1
end
end
Thanks,
P.Raveendran
High Line – “ask” to STDERR
October 6, 2008
If using the import interface, you can do it like this:
$terminal = HighLine.new($stdin, $stderr)
ask( � )
Otherwise, you can just build the proper HighLine instance and use it:
hl = HighLine.new($stdin, $stderr)
hl.ask( � )
Regards,
P.Raveendran
while and until in Ruby
August 19, 2007
Using while and until:
1.upto(5) { |raveendran| puts raveendran}
output:
1
2
3
4
5
However, it’s possible to loop code in other ways. while and until allow you to loop
code based on the result of a comparison made on each loop:
x = 1
while x < 100
puts x
x = x * 2
end
output:
1
2
4
8
16
32
64
The same output using UNTIL:
x = 1
until x > 99
puts x
x = x * 2
end
It’s also possible to use while and until in a single line setting, as with if and unless:
i = 1
i = i * 2 until i > 1000
puts i
output:
1024
elsif and case in Ruby
August 19, 2007
Practical guidence:
fruit = “orange”
if fruit == “orange”
color = “orange”
elsif fruit == “apple”
color = “green”
elsif fruit == “banana”
color = “yellow”
else
color = “unknown”
end
puts color
output:
orange
A variant of this technique is to use a case block. Our preceding example, with a case
block, becomes the following:
fruit = “orange”
case fruit
when “orange”
color = “orange”
when “apple”
color = “green”
when “banana”
color = “yellow”
else
color = “unknown”
end
output:
orange
case has another trick up its sleeve. As all Ruby expressions return a result, you can
make the previous example even shorter:
fruit = “orange”
color = case fruit
when “orange”
“orange”
when “apple”
“green”
when “banana”
“yellow”
else
“unknown”
end
output:
orange
Regards,
P.Raveendran
Ruby – If & Unless
August 19, 2007
Basic Structure and exercise:
age = 10
puts “You’re too young to use this system” if age < 18
output: You’re too young to use this system
age = 10
if age < 18
puts “You’re too young to use this system”
end
output: You’re too young to use this system
age = 10
if age < 18
puts “You’re too young to use this system”
puts “So we’re going to exit your program now”
exit
end
output: You’re too young to use this system
It’s worth noting that unless can work in exactly the same way because unless is just
the opposite of if:
age = 10
unless age >= 18
puts “You’re too young to use this system”
puts “So we’re going to exit your program now”
exit
end
output: You’re too young to use this system
It’s possible to nest logic too, as in this example:
age = 19
if age < 21
puts “You can’t drink in most of the United States”
if age >= 18
puts “But you can in the United Kingdom!”
end
end
Output:
You can’t drink in most of the United States
But you can in the United Kingdom!
if and unless also supply the else condition, used to delimit lines of code that you
want to be executed if the main expression is false:
age = 10
if age < 18
puts “You’re too young to use this system”
else
puts “You can use this system”
end
output:
You’re too young to use this system
?:, The Ternary Operator:
age = 10
type = age < 18 ? “child” : “adult”
puts “You are a ” + type
output: You are a child
The second line contains the ternary operator. It starts by assigning the result of an
expression to the variable, type. The expression is age < 18 ? “child” : “adult”. The
structure is as follows:
<condition> ? <result if condition is true> : <result if condition is false>
In our example, age < 18 returns as true, so the first result, “child”, is returned and
assigned to type. However, if age < 18 were to be false, “adult” would be returned.
Consider an alternative:
age = 10
type = ‘child’ if age < 18
type = ‘adult’ unless age < 18
puts “You are a ” + type
The double comparison makes it harder to read. Another alternative is to use the
multiline if/else option:
age = 10
if age < 18
type = ‘child’
else
type = ‘adult’
end
puts “You are a ” + type
age = 10
puts “You are a ” + (age < 18 ? “child” : “adult”)
Regards,
P.Raveendran
