本ページはプロモーションが含まれています

Ruby で Excelファイルを開く (Win32ole)

まずは、Excelファイルを開く方法

require 'win32ole'
 def fullpath fn
   fo = WIN32OLE.new('Scripting.FileSystemObject')
   fo.GetAbsolutePathName(fn)
 end
 fn = fullpath('test.xls')
 xls = WIN32OLE.new('Excel.Application')
 xls.visible = true
 book = xls.Workbooks.Open(fn)

GetAbsolutePathName は絶対パス

xls.visible = true にしておくと、Excelのウィンドウが表示される。falseにすると非表示。


【中古】単行本(実用) ≪コンピュータ≫ Rubyist Magazine出張版 Ruby on Windows / cuzic 【中古】afb

Ruby 文字列をバイト毎に処理

文字列をバイト毎に繰り返し処理を使う場合、String#each_byte を使うのだが、そのまま表示させると

irb(main):001:0> "abcdefg".each_byte {|elm| p elm }
 97
 98
 99
 100
 101
 102
 103

整数で表示されてしまうので、Integer#chr を使う。

irb(main):002:0> "abcdefg".each_byte {|elm| p elm.chr }
 "a"
 "b"
 "c"
 "d"
 "e"
 "f"
 "g"

String#bytes の場合は、Array#mapメソッドを使う。

irb(main):008:0> "abcdefg".bytes.map {|elm| elm.chr }
 => ["a", "b", "c", "d", "e", "f", "g"]

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ) [ 伊藤淳一(プログラミング) ]


ゼロからわかるRuby超入門 はじめてのプログラミング (かんたんIT基礎講座) [ 五十嵐邦明 ]

Ruby 簡単なcsvファイル(カンマ区切り形式)を読み込む。

Rubyで、簡単なcsv形式ファイルを1行ずつ読み込んで配列に格納する一番簡単な方法。
本当は csvライブラリを使うのが良いのだが、長年、この簡単な方法を使っている。

1.rb (プログラム名は数字でも構わない、拡張子は .rb が良い)

#csvファイルを1行ずつ読み込んで配列に格納し表示する
ARGF.each {|line|
  f = line.chomp.split(/,/)
  p f
}

test.csv テスト用ファイル

1,2,3
4,5,6
aaaa,bbbb,cccc
00001,00002,0003

試してみる

% ruby 1.rb test.csv
 ["1", "2", "3"]
 ["4", "5", "6"]
 ["aaaa", "bbbb", "cccc"]
 ["00001", "00002", "0003"]

簡単な方法を憶えたら、暫くは、そればかり使うと、やがて身についてくる。


プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ) [ 伊藤淳一(プログラミング) ]



ゼロからわかるRuby超入門 はじめてのプログラミング (かんたんIT基礎講座) [ 五十嵐邦明 ]